Buggy code:
public final class AST { private long modCount = 0 ; Scanner scanner ; public AST ( ) { } public AST ( Map options ) { } public long modificationCount ( ) { } void setModificationCount ( long value ) { } void modifying ( ) { } public static CompilationUnit parseCompilationUnit ( ICompilationUnit unit , boolean resolveBindings ) { } public static CompilationUnit parseCompilationUnit ( char [ ] source , String unitName , IJavaProject project ) { } public static CompilationUnit parseCompilationUnit ( char [ ] source ) { if ( source == null ) { throw new IllegalArgumentException ( ) ; } <START_BUG> CompilationUnitDeclaration compilationUnitDeclaration = CompilationUnitResolver . parse ( source ) ; <END_BUG> ASTConverter converter = new ASTConverter ( false ) ; AST ast = new AST ( ) ; ast . setBindingResolver ( new BindingResolver ( ) ) ; converter . setAST ( ast ) ; CompilationUnit cu = converter . convert ( compilationUnitDeclaration , source ) ; cu . setLineEndTable ( compilationUnitDeclaration . compilationResult . lineSeparatorPositions ) ; return cu ; } private BindingResolver resolver = new BindingResolver ( ) ; BindingResolver getBindingResolver ( ) { } public ITypeBinding resolveWellKnownType ( String name ) { } void setBindingResolver ( BindingResolver resolver ) { } public SimpleName newSimpleName ( String identifier ) { } public QualifiedName newQualifiedName ( Name qualifier , SimpleName name ) { } public Name newName ( String [ ] identifiers ) { } public SimpleType newSimpleType ( Name typeName ) { } public ArrayType newArrayType ( Type componentType ) { } public ArrayType newArrayType ( Type elementType , int dimensions ) { } public PrimitiveType newPrimitiveType ( PrimitiveType . Code typeCode ) { } public CompilationUnit newCompilationUnit ( ) { } public PackageDeclaration newPackageDeclaration ( ) { } public ImportDeclaration newImportDeclaration ( ) { } public TypeDeclaration newTypeDeclaration ( ) { } public MethodDeclaration newMethodDeclaration ( ) { } public SingleVariableDeclaration newSingleVariableDeclaration ( ) { } public VariableDeclarationFragment newVariableDeclarationFragment ( ) { } public Initializer newInitializer ( ) { } public Javadoc newJavadoc ( ) { } public VariableDeclarationStatement newVariableDeclarationStatement ( VariableDeclarationFragment fragment ) { } public TypeDeclarationStatement newTypeDeclarationStatement ( TypeDeclaration decl ) { } public Block newBlock ( ) { } public ContinueStatement newContinueStatement ( ) { } public BreakStatement newBreakStatement ( ) { } public ExpressionStatement newExpressionStatement ( Expression expression ) { } public IfStatement newIfStatement ( ) { } public WhileStatement newWhileStatement ( ) { } public DoStatement newDoStatement ( ) { } public TryStatement newTryStatement ( ) { } public CatchClause newCatchClause ( ) { } public ReturnStatement newReturnStatement ( ) { } public ThrowStatement newThrowStatement ( ) { } public AssertStatement newAssertStatement ( ) { } public EmptyStatement newEmptyStatement ( ) { } public LabeledStatement newLabeledStatement ( ) { } public SwitchStatement newSwitchStatement ( ) { } public SwitchCase newSwitchCase ( ) { } public SynchronizedStatement newSynchronizedStatement ( ) { } public ForStatement newForStatement ( ) { } public StringLiteral newStringLiteral ( ) { } public CharacterLiteral newCharacterLiteral ( ) { } public NumberLiteral newNumberLiteral ( String literal ) { } public NumberLiteral newNumberLiteral ( ) { } public NullLiteral newNullLiteral ( ) { } public BooleanLiteral newBooleanLiteral ( boolean value ) { } public Assignment newAssignment ( ) { } public MethodInvocation newMethodInvocation ( ) { } public SuperMethodInvocation newSuperMethodInvocation ( ) { } public ConstructorInvocation newConstructorInvocation ( ) { } public SuperConstructorInvocation newSuperConstructorInvocation ( ) { } public VariableDeclarationExpression newVariableDeclarationExpression ( VariableDeclarationFragment fragment ) { } public FieldDeclaration newFieldDeclaration ( VariableDeclarationFragment fragment ) { } public ThisExpression newThisExpression ( ) { } public FieldAccess newFieldAccess ( ) { } public SuperFieldAccess newSuperFieldAccess ( ) { } public TypeLiteral newTypeLiteral ( ) { } public CastExpression newCastExpression ( ) { } public ParenthesizedExpression newParenthesizedExpression ( ) { } public InfixExpression newInfixExpression ( ) { } public InstanceofExpression newInstanceofExpression ( ) { } public PostfixExpression newPostfixExpression ( ) { } public PrefixExpression newPrefixExpression ( ) { } public ArrayAccess newArrayAccess ( ) { } public ArrayCreation newArrayCreation ( ) { } public ClassInstanceCreation newClassInstanceCreation ( ) { } public AnonymousClassDeclaration newAnonymousClassDeclaration ( ) { } public ArrayInitializer newArrayInitializer ( ) { } public ConditionalExpression newConditionalExpression ( ) { } }

Fix:
CompilationUnitDeclaration compilationUnitDeclaration = CompilationUnitResolver . parse ( source , JavaCore . getOptions ( ) ) ;