Buggy code:
public class SourceTypeConverter implements CompilerModifiers { public static final int FIELD = 1 ; public static final int CONSTRUCTOR = 2 ; public static final int METHOD = 4 ; public static final int MEMBER_TYPE = 8 ; public static final int FIELD_INITIALIZATION = 16 ; public static final int FIELD_AND_METHOD = ( ( SourceTypeConverter . FIELD ) | ( SourceTypeConverter . CONSTRUCTOR ) ) | ( SourceTypeConverter . METHOD ) ; public static final int LOCAL_TYPE = 32 ; public static final int NONE = 0 ; private int flags ; private CompilationUnitDeclaration unit ; private Parser parser ; private ProblemReporter problemReporter ; private ICompilationUnit cu ; private char [ ] source ; private HashMap annotationPositions ; int namePos ; private SourceTypeConverter ( int flags , ProblemReporter problemReporter ) { } public static CompilationUnitDeclaration buildCompilationUnit ( ISourceType [ ] sourceTypes , int flags , ProblemReporter problemReporter , CompilationResult compilationResult ) { } private CompilationUnitDeclaration convert ( ISourceType [ ] sourceTypes , CompilationResult compilationResult ) throws JavaModelException { } private Initializer convert ( InitializerElementInfo initializerInfo , CompilationResult compilationResult ) throws JavaModelException { } private FieldDeclaration convert ( SourceField fieldHandle , TypeDeclaration type , CompilationResult compilationResult ) throws JavaModelException { SourceFieldElementInfo fieldInfo = ( ( SourceFieldElementInfo ) ( fieldHandle . getElementInfo ( ) ) ) ; FieldDeclaration field = new FieldDeclaration ( ) ; int start = fieldInfo . getNameSourceStart ( ) ; int end = fieldInfo . getNameSourceEnd ( ) ; <START_BUG> field . name = fieldInfo . getName ( ) ; <END_BUG> field . sourceStart = start ; field . sourceEnd = end ; field . declarationSourceStart = fieldInfo . getDeclarationSourceStart ( ) ; field . declarationSourceEnd = fieldInfo . getDeclarationSourceEnd ( ) ; int modifiers = fieldInfo . getModifiers ( ) ; boolean isEnumConstant = ( modifiers & ( AccEnum ) ) != 0 ; if ( isEnumConstant ) { field . modifiers = modifiers & ( ~ ( Flags . AccEnum ) ) ; } else { field . modifiers = modifiers ; field . type = createTypeReference ( fieldInfo . getTypeName ( ) , start , end ) ; } field . annotations = convertAnnotations ( fieldHandle ) ; if ( ( ( this . flags ) & ( SourceTypeConverter . FIELD_INITIALIZATION ) ) != 0 ) { char [ ] initializationSource = fieldInfo . getInitializationSource ( ) ; if ( initializationSource != null ) { if ( ( this . parser ) == null ) { this . parser = new Parser ( this . problemReporter , true ) ; } this . parser . parse ( field , type , this . unit , initializationSource ) ; } } if ( ( ( this . flags ) & ( SourceTypeConverter . LOCAL_TYPE ) ) != 0 ) { IJavaElement [ ] children = fieldInfo . getChildren ( ) ; int childrenLength = children . length ; if ( childrenLength > 0 ) { ArrayInitializer initializer = new ArrayInitializer ( ) ; field . initialization = initializer ; Expression [ ] expressions = new Expression [ childrenLength ] ; initializer . expressions = expressions ; for ( int i = 0 ; i < childrenLength ; i ++ ) { IJavaElement localType = children [ i ] ; TypeDeclaration anonymousLocalTypeDeclaration = convert ( ( ( SourceType ) ( localType ) ) , compilationResult ) ; QualifiedAllocationExpression expression = new QualifiedAllocationExpression ( anonymousLocalTypeDeclaration ) ; expression . type = anonymousLocalTypeDeclaration . superclass ; anonymousLocalTypeDeclaration . superclass = null ; anonymousLocalTypeDeclaration . superInterfaces = null ; anonymousLocalTypeDeclaration . allocation = expression ; anonymousLocalTypeDeclaration . modifiers &= ~ ( AccEnum ) ; expressions [ i ] = expression ; } } } return field ; } private AbstractMethodDeclaration convert ( SourceMethod methodHandle , CompilationResult compilationResult ) throws JavaModelException { } private TypeDeclaration convert ( SourceType typeHandle , CompilationResult compilationResult ) throws JavaModelException { } private Annotation [ ] convertAnnotations ( JavaElement element ) { } private ImportReference createImportReference ( char [ ] importName , int start , int end , boolean onDemand , int modifiers ) { } private TypeParameter createTypeParameter ( char [ ] typeParameterName , char [ ] [ ] typeParameterBounds , int start , int end ) { } private TypeReference createTypeReference ( char [ ] typeName , int start , int end ) { } private TypeReference decodeType ( char [ ] typeName , int length , int start , int end ) { } private TypeReference [ ] decodeTypeArguments ( char [ ] typeName , int length , int start , int end ) { } private char [ ] getSource ( ) { } private Expression parseMemberValue ( char [ ] memberValue ) { } }

Fix:
field . name = fieldHandle . getElementName ( ) . toCharArray ( ) ;