Changes from the 1.8.4 to 1.8.6
-------------------------------

** Bug
    * [FELIX-3461] - Re-manipulation with annotated component produces corrupted MANIFEST
    * [FELIX-3466] - Pojoization.directoryManipulation() does not take MANIFEST file location into account.
    * [FELIX-3508] - IPojo Manipulator left out 'array of enums' in generated metadata
    * [FELIX-3539] - iPOJO Manipulator failed on classes containing expanded frames
    * [FELIX-3573] - IPojo bytecode manipulation generates a duplicate local variable
    * [FELIX-3574] - IPojo bytecode manipulation looses method argument names
    * [FELIX-3621] - Two dimensional array as argument to a method in a component

Changes from the 1.8.2 to 1.8.4
-------------------------------

** Bug
    * [FELIX-3297] - iPOJO Manipulator throws ClassNotFoundException
    * [FELIX-3359] - Turn around to avoid to use the split verifier on Java 7
    * [FELIX-3389] - Bnd iPOJO Plugin ignores annotated components
    * [FELIX-3391] - Unexpected warning when using bnd-ipojo-plugin

Changes in the 1.8.2
--------------------

** Bug
    * [FELIX-2825] - The maven-ipojo-plugin does not replace component classes in WAR files
    * [FELIX-3012] - "Duplicate name&signature" problem
    * [FELIX-3098] - iPOJO new manipulator crashes when using a custom reporter
    * [FELIX-3145] - VerifyError on Java 7
    * [FELIX-3249] - iPOJO Bnd Plugin do not write all the metadatas in the manifest

** Improvement
    * [FELIX-3017] - The manipulator should return the original class if it's already manipulated
    * [FELIX-3078] - Introduce resource abstraction in the iPOJO manipulator
    * [FELIX-3079] - Adapt the Ant task and the maven plugin to use the new manipulator capabilities
    * [FELIX-3080] - Implement a BND plugin for iPOJO
    * [FELIX-3131] - Elements and attributes should conserve the insertion order
    * [FELIX-3204] - @Temporal should handle instantiation-time properties
    * [FELIX-3244] - Manipulator : DefaultManifestBuilder should be more extensible