Buggy code:
public class MethodDeclaration extends BodyDeclaration { public static final ChildPropertyDescriptor JAVADOC_PROPERTY = BodyDeclaration . internalJavadocPropertyFactory ( MethodDeclaration . class ) ; public static final SimplePropertyDescriptor MODIFIERS_PROPERTY = BodyDeclaration . internalModifiersPropertyFactory ( MethodDeclaration . class ) ; public static final ChildListPropertyDescriptor MODIFIERS2_PROPERTY = BodyDeclaration . internalModifiers2PropertyFactory ( MethodDeclaration . class ) ; public static final SimplePropertyDescriptor CONSTRUCTOR_PROPERTY = new SimplePropertyDescriptor ( MethodDeclaration . class , "constructor" , boolean . class , ASTNode . MANDATORY ) ; public static final ChildPropertyDescriptor NAME_PROPERTY = new ChildPropertyDescriptor ( MethodDeclaration . class , "name" , SimpleName . class , ASTNode . MANDATORY , ASTNode . NO_CYCLE_RISK ) ; public static final ChildPropertyDescriptor RETURN_TYPE_PROPERTY = new ChildPropertyDescriptor ( MethodDeclaration . class , "returnType" , Type . class , ASTNode . MANDATORY , ASTNode . NO_CYCLE_RISK ) ; public static final ChildPropertyDescriptor RETURN_TYPE2_PROPERTY = new ChildPropertyDescriptor ( MethodDeclaration . class , "returnType2" , Type . class , ASTNode . OPTIONAL , ASTNode . NO_CYCLE_RISK ) ; public static final SimplePropertyDescriptor EXTRA_DIMENSIONS_PROPERTY = new SimplePropertyDescriptor ( MethodDeclaration . class , "extraDimensions" , int . class , ASTNode . MANDATORY ) ; public static final ChildListPropertyDescriptor TYPE_PARAMETERS_PROPERTY = new ChildListPropertyDescriptor ( MethodDeclaration . class , "typeParameters" , TypeParameter . class , ASTNode . NO_CYCLE_RISK ) ; public static final ChildListPropertyDescriptor PARAMETERS_PROPERTY = new ChildListPropertyDescriptor ( MethodDeclaration . class , "parameters" , SingleVariableDeclaration . class , ASTNode . CYCLE_RISK ) ; public static final ChildListPropertyDescriptor THROWN_EXCEPTIONS_PROPERTY = new ChildListPropertyDescriptor ( MethodDeclaration . class , "thrownExceptions" , Name . class , ASTNode . NO_CYCLE_RISK ) ; public static final ChildPropertyDescriptor BODY_PROPERTY = new ChildPropertyDescriptor ( MethodDeclaration . class , "body" , Block . class , ASTNode . OPTIONAL , ASTNode . CYCLE_RISK ) ; private static final List PROPERTY_DESCRIPTORS_2_0 ; private static final List PROPERTY_DESCRIPTORS_3_0 ; public static List propertyDescriptors ( int apiLevel ) { } private boolean isConstructor = false ; private SimpleName methodName = null ; private ASTNode . NodeList parameters = new ASTNode . NodeList ( MethodDeclaration . PARAMETERS_PROPERTY ) ; private Type returnType = null ; private boolean returnType2Initialized = false ; private ASTNode . NodeList typeParameters = null ; private int extraArrayDimensions = 0 ; private ASTNode . NodeList thrownExceptions = new ASTNode . NodeList ( MethodDeclaration . THROWN_EXCEPTIONS_PROPERTY ) ; private Block optionalBody = null ; MethodDeclaration ( AST ast ) { } final List internalStructuralPropertiesForType ( int apiLevel ) { } final int internalGetSetIntProperty ( SimplePropertyDescriptor property , boolean get , int value ) { } final boolean internalGetSetBooleanProperty ( SimplePropertyDescriptor property , boolean get , boolean value ) { } final ASTNode internalGetSetChildProperty ( ChildPropertyDescriptor property , boolean get , ASTNode child ) { } final List internalGetChildListProperty ( ChildListPropertyDescriptor property ) { } final ChildPropertyDescriptor internalJavadocProperty ( ) { } final ChildListPropertyDescriptor internalModifiers2Property ( ) { } final SimplePropertyDescriptor internalModifiersProperty ( ) { } final int getNodeType0 ( ) { } ASTNode clone0 ( AST target ) { MethodDeclaration result = new MethodDeclaration ( target ) ; <START_BUG> result . setSourceRange ( this . getStartPosition ( ) , this . getLength ( ) ) ; <END_BUG> result . setJavadoc ( ( ( Javadoc ) ( ASTNode . copySubtree ( target , getJavadoc ( ) ) ) ) ) ; if ( ( this . ast . apiLevel ) == ( AST . JLS2_INTERNAL ) ) { result . internalSetModifiers ( getModifiers ( ) ) ; result . setReturnType ( ( ( Type ) ( ASTNode . copySubtree ( target , getReturnType ( ) ) ) ) ) ; } if ( ( this . ast . apiLevel ) >= ( AST . JLS3 ) ) { result . modifiers ( ) . addAll ( ASTNode . copySubtrees ( target , modifiers ( ) ) ) ; result . typeParameters ( ) . addAll ( ASTNode . copySubtrees ( target , typeParameters ( ) ) ) ; result . setReturnType2 ( ( ( Type ) ( ASTNode . copySubtree ( target , getReturnType2 ( ) ) ) ) ) ; } result . setConstructor ( isConstructor ( ) ) ; result . setExtraDimensions ( getExtraDimensions ( ) ) ; result . setName ( ( ( SimpleName ) ( getName ( ) . clone ( target ) ) ) ) ; result . parameters ( ) . addAll ( ASTNode . copySubtrees ( target , parameters ( ) ) ) ; result . thrownExceptions ( ) . addAll ( ASTNode . copySubtrees ( target , thrownExceptions ( ) ) ) ; result . setBody ( ( ( Block ) ( ASTNode . copySubtree ( target , getBody ( ) ) ) ) ) ; return result ; } final boolean subtreeMatch0 ( ASTMatcher matcher , Object other ) { } void accept0 ( ASTVisitor visitor ) { } public boolean isConstructor ( ) { } public void setConstructor ( boolean isConstructor ) { } public List typeParameters ( ) { } public SimpleName getName ( ) { } public void setName ( SimpleName methodName ) { } public List parameters ( ) { } public boolean isVarargs ( ) { } public List thrownExceptions ( ) { } public Type getReturnType ( ) { } final Type internalGetReturnType ( ) { } public void setReturnType ( Type type ) { } void internalSetReturnType ( Type type ) { } public Type getReturnType2 ( ) { } public void setReturnType2 ( Type type ) { } public int getExtraDimensions ( ) { } public void setExtraDimensions ( int dimensions ) { } public Block getBody ( ) { } public void setBody ( Block body ) { } public IMethodBinding resolveBinding ( ) { } int memSize ( ) { } int treeSize ( ) { } }

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