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

** Bug
    * [FELIX-3742] - Implementing class fails to load unless super interface's (interface extended by implemented interface) package is imported.
    * [FELIX-3789] - Deadlock due to synchronization on INSTANCE_NAME
    * [FELIX-3819] - The export directive of iPOJO is wrong

Changes from the 1.8.2 to 1.8.4
--------------------------------

** Bug
    * [FELIX-3451] - "instance.name" attribute not recognized
    * [FELIX-3500] - InstanceManager concurrency issue: "A methodID cannot be associated with a method from the POJO class"
    * [FELIX-3501] - IPojo FactoryStateListener doesn't get notified while stopping factory
    * [FELIX-3545] - Memory leak when unregistering a component used by an aggregate dependency with an unbind callback
    * [FELIX-3548] - Concurrent access during startup
    * [FELIX-3567] - iPOJO Configuration Handler should not reuse the dictionary object from the configuration admin
    * [FELIX-3576] - iPOJO fails when using constructor injection and expecting BundleContext in ctor
    * [FELIX-3599] - Problem with 'subservice action="instantiate"' in ipojo composite
    * [FELIX-3621] - Two dimensional array as argument to a method in a component
    * [FELIX-3672] - Potential Concurrent Modification Exception when a bundle is stopped

** Improvement
    * [FELIX-3560] - Extensions to IPojo's Factory and ComponentInstance documentation for custom handlers

Changes from the 1.8.0 to 1.8.2
-------------------------------
** Bug
    * [FELIX-3130] - Nested composites throws StackOverflowError on instantiation
    * [FELIX-3323] - Ipojo composite throw ClassCastException when configuration is updated thru ConfigAdmin
    * [FELIX-3451] - "instance.name" attribute not recognized

Changes from the 1.6.0 to 1.8.0
-------------------------------
** Improvement
    * [FELIX-2746] - Composite should support instance configuration

Changes from the 1.4.0 to 1.6.0
-------------------------------
** Improvement
    * [FELIX-1427] - Service injection with Smart Proxies
    * [FELIX-1906] - Allow calling a method when service properties of an already injected service are modified


Changes from 1.2.0 to 1.4.0
---------------------------
** Bug
    * [FELIX-994] - ClassCastException while Architecture on a composite with a provided service

** Improvement
    * Update parent pom


Changes from 1.0.0 to 1.2.0
---------------------------
** Bug
    * [FELIX-797] - Composite Architecture contains duplicate instances
    * [FELIX-817] - iPOJO Service Exported throw an error when stopping

Changes from 0.8.1 to 1.0.0
---------------------------
** Bug
    * [FELIX-622] - iPOJO Composite Service Instance can use factories twice to create service instance
    * [FELIX-628] - Architecture service should not publish the instance.name property
    * [FELIX-637] - Composite service implementation does not support long argument

** Improvement
    * [FELIX-673] - Provide OBR description to iPOJO bundles
    * [FELIX-688] - Better error reporting when an instance creation failed
    * [FELIX-689] - Instance 'name' property should become 'instance.name'
    * [FELIX-716] - Provide XML schemas for iPOJO descriptors

Version 0.8.1
-------------
    * Initial release
