Buggy code:
public MethodDeclaration convertToMethodDeclaration ( ConstructorDeclaration c , CompilationResult compilationResult ) { } protected CompilationUnitDeclaration endParse ( int act ) { } private ISourceElementRequestor . TypeParameterInfo [ ] getTypeParameterInfos ( TypeParameter [ ] typeParameters ) { } public TypeReference getTypeReference ( int dim ) { } public NameReference getUnspecifiedReference ( ) { } public NameReference getUnspecifiedReferenceOptimized ( ) { } private boolean hasDeprecatedAnnotation ( Annotation [ ] annotations ) { } protected ImportReference newImportReference ( char [ ] [ ] tokens , long [ ] positions , boolean onDemand , int mod ) { } protected QualifiedNameReference newQualifiedNameReference ( char [ ] [ ] tokens , long [ ] positions , int sourceStart , int sourceEnd ) { } protected SingleNameReference newSingleNameReference ( char [ ] source , long positions ) { } public void notifySourceElementRequestor ( CompilationUnitDeclaration parsedUnit ) { } public void notifySourceElementRequestor ( AbstractMethodDeclaration methodDeclaration ) { } public void notifySourceElementRequestor ( FieldDeclaration fieldDeclaration , TypeDeclaration declaringType ) { } public void notifySourceElementRequestor ( ImportReference importReference , boolean isPackage ) { } public void notifySourceElementRequestor ( TypeDeclaration typeDeclaration , boolean notifyTypePresence , TypeDeclaration declaringType ) { if ( CharOperation . equals ( TypeConstants . PACKAGE_INFO_NAME , typeDeclaration . name ) ) return ; boolean isInRange = ( ( scanner . initialPosition ) <= ( typeDeclaration . declarationSourceStart ) ) && ( ( scanner . eofPosition ) >= ( typeDeclaration . declarationSourceEnd ) ) ; FieldDeclaration [ ] fields = typeDeclaration . fields ; AbstractMethodDeclaration [ ] methods = typeDeclaration . methods ; TypeDeclaration [ ] memberTypes = typeDeclaration . memberTypes ; int fieldCounter = ( fields == null ) ? 0 : fields . length ; int methodCounter = ( methods == null ) ? 0 : methods . length ; int memberTypeCounter = ( memberTypes == null ) ? 0 : memberTypes . length ; int fieldIndex = 0 ; int methodIndex = 0 ; int memberTypeIndex = 0 ; if ( notifyTypePresence ) { char [ ] [ ] interfaceNames = null ; int superInterfacesLength = 0 ; TypeReference [ ] superInterfaces = typeDeclaration . superInterfaces ; if ( superInterfaces != null ) { superInterfacesLength = superInterfaces . length ; interfaceNames = new char [ superInterfacesLength ] [ ] ; } else { if ( ( ( typeDeclaration . bits ) & ( ASTNode . IsAnonymousType ) ) != 0 ) { QualifiedAllocationExpression alloc = typeDeclaration . allocation ; if ( ( alloc != null ) && ( ( alloc . type ) != null ) ) { superInterfaces = new TypeReference [ ] { alloc . type } ; superInterfacesLength = 1 ; interfaceNames = new char [ 1 ] [ ] ; } } } if ( superInterfaces != null ) { for ( int i = 0 ; i < superInterfacesLength ; i ++ ) { interfaceNames [ i ] = CharOperation . concatWith ( superInterfaces [ i ] . getParameterizedTypeName ( ) , '.' ) ; } } int kind = TypeDeclaration . kind ( typeDeclaration . modifiers ) ; char [ ] implicitSuperclassName = TypeConstants . CharArray_JAVA_LANG_OBJECT ; if ( isInRange ) { int currentModifiers = typeDeclaration . modifiers ; boolean deprecated = ( ( currentModifiers & ( ClassFileConstants . AccDeprecated ) ) != 0 ) || ( hasDeprecatedAnnotation ( typeDeclaration . annotations ) ) ; boolean isEnumInit = ( ( typeDeclaration . allocation ) != null ) && ( ( typeDeclaration . allocation . enumConstant ) != null ) ; char [ ] superclassName ; if ( isEnumInit ) { currentModifiers |= ClassFileConstants . AccEnum ; superclassName = declaringType . name ; } else { TypeReference superclass = typeDeclaration . superclass ; superclassName = ( superclass != null ) ? CharOperation . concatWith ( superclass . getParameterizedTypeName ( ) , '.' ) : null ; } ISourceElementRequestor . TypeInfo typeInfo = new ISourceElementRequestor . TypeInfo ( ) ; <START_BUG> typeInfo . declarationStart = typeDeclaration . declarationSourceStart ; <END_BUG> typeInfo . modifiers = ( deprecated ) ? ( currentModifiers & ( ExtraCompilerModifiers . AccJustFlag ) ) | ( ClassFileConstants . AccDeprecated ) : currentModifiers & ( ExtraCompilerModifiers . AccJustFlag ) ; typeInfo . name = typeDeclaration . name ; typeInfo . nameSourceStart = typeDeclaration . sourceStart ; typeInfo . nameSourceEnd = sourceEnd ( typeDeclaration ) ; typeInfo . superclass = superclassName ; typeInfo . superinterfaces = interfaceNames ; typeInfo . typeParameters = getTypeParameterInfos ( typeDeclaration . typeParameters ) ; typeInfo . categories = ( ( char [ ] [ ] ) ( this . nodesToCategories . get ( typeDeclaration ) ) ) ; typeInfo . secondary = typeDeclaration . isSecondary ( ) ; typeInfo . anonymousMember = ( ( typeDeclaration . allocation ) != null ) && ( ( typeDeclaration . allocation . enclosingInstance ) != null ) ; typeInfo . annotations = typeDeclaration . annotations ; requestor . enterType ( typeInfo ) ; switch ( kind ) { case TypeDeclaration . CLASS_DECL : if ( superclassName != null ) implicitSuperclassName = superclassName ; break ; case TypeDeclaration . INTERFACE_DECL : implicitSuperclassName = TypeConstants . CharArray_JAVA_LANG_OBJECT ; break ; case TypeDeclaration . ENUM_DECL : implicitSuperclassName = TypeConstants . CharArray_JAVA_LANG_ENUM ; break ; case TypeDeclaration . ANNOTATION_TYPE_DECL : implicitSuperclassName = TypeConstants . CharArray_JAVA_LANG_ANNOTATION_ANNOTATION ; break ; } } if ( ( this . nestedTypeIndex ) == ( this . typeNames . length ) ) { System . arraycopy ( this . typeNames , 0 , ( this . typeNames = new char [ ( this . nestedTypeIndex ) * 2 ] [ ] ) , 0 , this . nestedTypeIndex ) ; System . arraycopy ( this . superTypeNames , 0 , ( this . superTypeNames = new char [ ( this . nestedTypeIndex ) * 2 ] [ ] ) , 0 , this . nestedTypeIndex ) ; } this . typeNames [ this . nestedTypeIndex ] = typeDeclaration . name ; this . superTypeNames [ ( ( this . nestedTypeIndex ) ++ ) ] = implicitSuperclassName ; }

Fix:
typeInfo . declarationStart = ( ( typeDeclaration . allocation ) == null ) ? typeDeclaration . declarationSourceStart : typeDeclaration . allocation . sourceStart ;