@Documented @Retention(value=SOURCE) @Target(value=FIELD) public @interface IndexedProperty
Example usage: suppose you have a class with the following properties:
will add the following methods to the class containing the properties:@IndexedPropertyFieldType[] someField@IndexedPropertyListotherField @IndexedPropertyList furtherField
 FieldType getSomeField(int index) {
     someField[index]
 }
 FieldType getOtherField(int index) {
     otherField[index]
 }
 Object getFurtherField(int index) {
     furtherField[index]
 }
 void setSomeField(int index, FieldType val) {
     someField[index] = val
 }
 void setOtherField(int index, FieldType val) {
     otherField[index] = val
 }
 void setFurtherField(int index, Object val) {
     furtherField[index] = val
 }
 
 Normal Groovy visibility rules for properties apply
 (i.e. no public, private or package
 visibility can be specified) or you will receive a compile-time error message.
 The normal Groovy property getters and setters will also be created.