An extension of the complex enum template of Dmitry Ionash discussed on http://java.dzone.com/articles/graniteds-gas3-template. It produces typed properties and takes into account @IgnoredProperty and @ExternalizedProperty (because we use GraniteDS code).