Changes from the 1.6.4 to 1.8.0
-------------------------------
** Bug
    * [FELIX-2664] - Native methods should not be manipulated

** Improvement
    * [FELIX-1424] - Constructor Injection
    * [FELIX-1428] - Constructor injection of Configuration properties
    * [FELIX-2620] - Change iPojo annotation parameters to follow java naming conventions
    * [FELIX-2621] - Rename annotations to remove collisions
    * [FELIX-2622] - Support static service properties that are not mirrored into fields
    * [FELIX-2630] - Rename @Component attributes to follow the java naming conventions
    * [FELIX-2732] - [iPOJO] Service modified callback should define a default method name
    * [FELIX-2742] - Constructor injection of service dependencies
    * [FELIX-2743] - Modify Pojoization to be more easily customizable
    * [FELIX-2755] - Allow the manipulator and the different front end to use several metadata files

Changes from the 1.6.2 to 1.6.4
-------------------------------
** Bug
    * [FELIX-2430] - IPOJO manipulation (ant task) results in invalid classes throwing java.lang.VerifyError at runtime in InstanceManager

** Improvement
    * [FELIX-2420] - Enum support for @Property annotation
    * [FELIX-2461] - Allow specifying the targeted service interface in the @ServiceController
    * [FELIX-2485] - Improve the performance of the manipulator on large files
    * [FELIX-2542] - Annotations on methods parameters are not moved on public methods after manipulation

Changes from the 1.6.0 to 1.6.2
-------------------------------
** Improvement
    * [FELIX-2296] - Access to ServiceReference in iPOJO service.

Changes from the 1.4.2 to 1.6.0
-------------------------------
** Improvement
    * [FELIX-1427] - Service injection with Smart Proxies
    * [FELIX-1646] - Add @Handler annotation to declare handlers without metadata.xml
    * [FELIX-1906] - Allow calling a method when service properties of an already injected service are modified

** Wish
    * [FELIX-1940] - Add @Instance annotation to declare instances without metadata.xml


Changes from the 1.4.0 to 1.4.2
-------------------------------
** Bug
    * [FELIX-1411] - Issue on windows to find components inside bundle
    * [FELIX-1518] - iPOJO manipulator is really slow even when annotation are ignored


Changes from 1.2.0 to 1.4.0
---------------------------
** Bug
    * [FELIX-1302] - Manipulator never ignore annotations
    * [FELIX-1319] - Issue in the metadata overiding analysis in iPOJO annotations

** Improvement
    * Update parent pom
    * [FELIX-943] - Allow iPOJO manipulator to manipulate directories


Changes from 1.0.0 to 1.2.0
---------------------------
** Bug
    * [FELIX-788] - Failed to create object that extends super class with BundleContext argument

** Improvement
    * [FELIX-813] - Resolve XML-Schemas locally rather than from Internet
    * [FELIX-830] - Simplify the "id/parent" resolution to compute the metadata hierarchy during annotation processing
    * [FELIX-846] - Enhance the iPojo maven plugin to take metadata from pom.
    * [FELIX-876] - Specification auto import is not supported for simple component types


Changes from 0.8.0 to 1.0.0
---------------------------
** Bug
    * [FELIX-649] - "Expecting to find object/array on stack" Error when asking for instance of an iPOJO component
    * [FELIX-697] - Generation of a duplicated field when using generics
    * [FELIX-739] - iPOJO and annotations support when manipulating
    * [FELIX-751] - Wrong access for setter methods

** Improvement
    * [FELIX-655] - Add a 'from' attribute in the service dependencies
    * [FELIX-678] - Improve missing fields detection during the packaging process
    * [FELIX-687] - Support inner and nested classes
    * [FELIX-716] - Provide XML schemas for iPOJO descriptors


Version 0.8.0
-------------
    * Initial release
