Changes from 1.9.8 to 1.9.6
---------------------------
** Improvement
    * [FELIX-4277] - The maven-scr-plugin generates false warnings when using @SlingServlet
    * [FELIX-4393] - @Property should accept empty name values on instance fields 

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


