Changes from 1.9.6 to 1.9.4
---------------------------
** Improvement
    * [FELIX-4170] - Deprecate inheritance of component descriptors


Changes from 1.9.4 to 1.9.2
---------------------------
** Bug
    * [FELIX-4047] - Unable to create single valued (String) array property

** Improvement
    * [FELIX-4063] - Avoid warnings when using @SlingServlet and @SlingFilter annotations 


Changes from 1.9.2 to 1.9.0
---------------------------
** Bug
    * [FELIX-3977] -  @Property: ArrayIndexOutOfBoundsException empty array default value  


Changes from 1.9.0 to 1.8.0
---------------------------
** Bug
    * [FELIX-3940] - Abstract class is not detected 
 
 
Changes from 1.8.0 to 1.7.0
---------------------------
** Improvement
    * [FELIX-3169] - Add support for new PASSWORD attribute type of Metatype service


Changes from 1.6.0 to 1.7.0
---------------------------

** Task
    * [FELIX-3225] - Drop javadoc annotation support
    * [FELIX-3247] - Change annotation retention from source to class
    * [FELIX-3552] - Implement new features of DS 1.2
    * [FELIX-3550] - Reimplement the SCR Generator
    * [FELIX-3551] - Support the DS annotations

** Bug
    * [FELIX-3457] - Component annotation does not detect abstract class
    * [FELIX-3077] - Abstract class is not detected as abstract
    * [FELIX-3593] - ClassCastException when using short-cut notation inside array value annotations

** Improvement
    * [FELIX-2689] - Upgrade Descriptor generator to new parent POM and adapt legal files


Changes from 1.5.0 to 1.6.0
---------------------------

** Bug
    * [FELIX-3077] - Abstract class is not detected as abstract


Changes from 1.5.0 to 1.6.0
---------------------------

** Bug
    * [FELIX-2957] - Filter scope should be an array
    * [FELIX-2943] - Component generated by @SlingServlet does not match default settings of @Component

** Improvement
    * [FELIX-2939] - Maven SCR Plugin is not (marked as) thread-safe for parallel builds
    * [FELIX-2908] - Use same mechanism to get single annotation values as for multiple annotation values


Changes from 1.4.0 to 1.5.0
---------------------------

** Bug
    * [FELIX-2704] - @Property(cardinality=Integer.MAX_Int, ...) causes java.lang.NumberFormatException

** Improvement
    * [FELIX-2753] - Support array of classes for @Service annotation
    * [FELIX-2874] - Add new scopes to SlingFilter annotation and use new property names
    * [FELIX-2838] - Allow classes to be specifed as values for the @Property annotation
    * [FELIX-2863] - Warnings and error messages contain @scr.* if annotations are used
    * [FELIX-2690] - Add changelog.txt to SCR/Metatype generation modules


