Buggy code:
public final class Modifier extends ASTNode implements IExtendedModifier { public static class ModifierKeyword { public static final Modifier . ModifierKeyword ABSTRACT_KEYWORD = new Modifier . ModifierKeyword ( "abstract" , Modifier . ABSTRACT ) ; public static final Modifier . ModifierKeyword FINAL_KEYWORD = new Modifier . ModifierKeyword ( "final" , Modifier . FINAL ) ; private static final Map KEYWORDS ; public static final Modifier . ModifierKeyword NATIVE_KEYWORD = new Modifier . ModifierKeyword ( "native" , Modifier . NATIVE ) ; public static final Modifier . ModifierKeyword PRIVATE_KEYWORD = new Modifier . ModifierKeyword ( "private" , Modifier . PRIVATE ) ; public static final Modifier . ModifierKeyword PROTECTED_KEYWORD = new Modifier . ModifierKeyword ( "protected" , Modifier . PROTECTED ) ; public static final Modifier . ModifierKeyword PUBLIC_KEYWORD = new Modifier . ModifierKeyword ( "public" , Modifier . PUBLIC ) ; public static final Modifier . ModifierKeyword STATIC_KEYWORD = new Modifier . ModifierKeyword ( "static" , Modifier . STATIC ) ; public static final Modifier . ModifierKeyword STRICTFP_KEYWORD = new Modifier . ModifierKeyword ( "strictfp" , Modifier . STRICTFP ) ; public static final Modifier . ModifierKeyword SYNCHRONIZED_KEYWORD = new Modifier . ModifierKeyword ( "synchronized" , Modifier . SYNCHRONIZED ) ; public static final Modifier . ModifierKeyword TRANSIENT_KEYWORD = new Modifier . ModifierKeyword ( "transient" , Modifier . TRANSIENT ) ; public static final Modifier . ModifierKeyword VOLATILE_KEYWORD = new Modifier . ModifierKeyword ( "volatile" , Modifier . VOLATILE ) ; public static Modifier . ModifierKeyword fromFlagValue ( int flagValue ) { } public static Modifier . ModifierKeyword toKeyword ( String keyword ) { } private int flagValue ; private String keyword ; private ModifierKeyword ( String keyword , int flagValue ) { } public int toFlagValue ( ) { } public String toString ( ) { } } public static final int ABSTRACT = 1024 ; public static final int FINAL = 16 ; public static final SimplePropertyDescriptor KEYWORD_PROPERTY = new SimplePropertyDescriptor ( Modifier . class , "keyword" , Modifier . ModifierKeyword . class , ASTNode . MANDATORY ) ; public static final int NATIVE = 256 ; public static final int NONE = 0 ; public static final int PRIVATE = 2 ; private static final List PROPERTY_DESCRIPTORS ; public static final int PROTECTED = 4 ; public static final int PUBLIC = 1 ; public static final int STATIC = 8 ; public static final int STRICTFP = 2048 ; public static final int SYNCHRONIZED = 32 ; public static final int TRANSIENT = 128 ; public static final int VOLATILE = 64 ; public static boolean isAbstract ( int flags ) { } public static boolean isFinal ( int flags ) { } public static boolean isNative ( int flags ) { } public static boolean isPrivate ( int flags ) { } public static boolean isProtected ( int flags ) { } public static boolean isPublic ( int flags ) { } public static boolean isStatic ( int flags ) { } public static boolean isStrictfp ( int flags ) { } public static boolean isSynchronized ( int flags ) { } public static boolean isTransient ( int flags ) { } public static boolean isVolatile ( int flags ) { } public static List propertyDescriptors ( int apiLevel ) { } private Modifier . ModifierKeyword modifierKeyword = Modifier . ModifierKeyword . PUBLIC_KEYWORD ; Modifier ( AST ast ) { } void accept0 ( ASTVisitor visitor ) { } ASTNode clone0 ( AST target ) { Modifier result = new Modifier ( target ) ; <START_BUG> result . setSourceRange ( this . getStartPosition ( ) , this . getLength ( ) ) ; <END_BUG> result . setKeyword ( getKeyword ( ) ) ; return result ; } public Modifier . ModifierKeyword getKeyword ( ) { } final int getNodeType0 ( ) { } final Object internalGetSetObjectProperty ( SimplePropertyDescriptor property , boolean get , Object value ) { } final List internalStructuralPropertiesForType ( int apiLevel ) { } public boolean isAbstract ( ) { } public boolean isAnnotation ( ) { } public boolean isFinal ( ) { } public boolean isModifier ( ) { } public boolean isNative ( ) { } public boolean isPrivate ( ) { } public boolean isProtected ( ) { } public boolean isPublic ( ) { } public boolean isStatic ( ) { } public boolean isStrictfp ( ) { } public boolean isSynchronized ( ) { } public boolean isTransient ( ) { } public boolean isVolatile ( ) { } int memSize ( ) { } public void setKeyword ( Modifier . ModifierKeyword modifierKeyord ) { } final boolean subtreeMatch0 ( ASTMatcher matcher , Object other ) { } int treeSize ( ) { } }

Fix:
result . setSourceRange ( getStartPosition ( ) , getLength ( ) ) ;