Changes from the 1.6.2 to 1.8.0
-------------------------------
** Bug
    * [FELIX-2438] - Temporal dependencies should use proxies by default

** Improvement
    * [FELIX-2666] - Rename the temporal handler annotation to avoid collision

Changes from the 1.6.0 to 1.6.2
-------------------------------
** Improvement
    * [FELIX-2472] - Proxies should throw a runtime exception instead of a null point exception

Changes from the 1.4.2 to 1.6.0
-------------------------------
** Improvement
    * [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
---------------------------
** Improvement
    * Update parent pom


Changes from 1.0.0 to 1.2.0
---------------------------
** Improvement
    * [FELIX-855] - Collection support in iPOJO Temporal Dependencies
    * [FELIX-860] - Temporal Dependency Proxy injection

Changes from 0.8.1 to 1.0.0
---------------------------
** Improvement
    * [FELIX-625] - Temporal Dependency improvements (onTimeout policies)
    * [FELIX-673] - Provide OBR description to iPOJO bundles
    * [FELIX-716] - Provide XML schemas for iPOJO descriptors


Version 0.8.1
-------------
    * Initial release
