Buggy code:
public class HeaderWriter extends TransformWriter { private final IPath root ; private String lastAccess ; private boolean hasInitializer ; private String initializer ; private List < MethodDeclaration > constructors = new ArrayList < MethodDeclaration > ( ) ; private Set < String > usings = new HashSet < String > ( ) ; public HeaderWriter ( IPath root , Transformer ctx , ITypeBinding type ) { } public void write ( TypeDeclaration node ) throws Exception { } public void writeType ( AST ast , List < BodyDeclaration > declarations , Collection < IVariableBinding > closures ) { try { out = TransformUtil . openHeader ( root , type ) ; List < ITypeBinding > bases = TransformUtil . getBases ( ast , type ) ; for ( ITypeBinding base : bases ) { hardDep ( base ) ; println ( TransformUtil . include ( base ) ) ; } println ( ) ; print ( "class<seq2seq4repair_space>" , TransformUtil . qualifiedCName ( type ) ) ; String sep = "<seq2seq4repair_space>:<seq2seq4repair_space>public<seq2seq4repair_space>" ; for ( ITypeBinding base : bases ) { print ( sep , TransformUtil . virtual ( base ) , TransformUtil . relativeCName ( base , type ) ) ; sep = ",<seq2seq4repair_space>public<seq2seq4repair_space>" ; } println ( ) ; println ( "{" ) ; ( indent ) ++ ; if ( ! ( type . isInterface ( ) ) ) { printi ( "typedef<seq2seq4repair_space>" ) ; if ( ( type . getSuperclass ( ) ) != null ) { print ( TransformUtil . relativeCName ( type . getSuperclass ( ) , type ) ) ; } else { print ( "java::lang::Object" ) ; } println ( "<seq2seq4repair_space>super;" ) ; } visitAll ( declarations ) ; lastAccess = TransformUtil . printAccess ( out , Modifier . PUBLIC , lastAccess ) ; if ( type . isAnonymous ( ) ) { makeBaseConstructors ( closures ) ; } else { makeConstructors ( closures ) ; } <START_BUG> if ( TransformUtil . isInner ( type ) ) { <END_BUG> printlni ( TransformUtil . outerThis ( type ) , ";" ) ; } if ( closures != null ) { for ( IVariableBinding closure : closures ) { printlni ( TransformUtil . relativeCName ( closure . getType ( ) , type ) , "<seq2seq4repair_space>" , TransformUtil . ref ( closure . getType ( ) ) , closure . getName ( ) , "_;" ) ; } } ( indent ) -- ; println ( "};" ) ; out . close ( ) ; headers . add ( type ) ; } catch ( IOException e ) { throw new Error ( e ) ; } } private void makeConstructors ( Collection < IVariableBinding > closures ) { } private void makeBaseConstructors ( Collection < IVariableBinding > closures ) { } private List < Class < ? > > handledBlocks = new ArrayList < Class < ? > > ( Arrays . asList ( TypeDeclaration . class ) ) ; @ Override public boolean visit ( Block node ) { } @ Override public boolean visit ( EnumConstantDeclaration node ) { } @ Override public boolean visit ( EnumDeclaration node ) { } @ Override public boolean visit ( FieldDeclaration node ) { } private static boolean isAnyArray ( List < VariableDeclarationFragment > fragments ) { } @ Override public boolean visit ( Initializer node ) { } @ Override public boolean visit ( Javadoc node ) { } @ Override public boolean visit ( MethodDeclaration node ) { } @ Override public boolean visit ( SimpleName node ) { } @ Override public boolean visit ( SimpleType node ) { } @ Override public boolean visit ( QualifiedName node ) { } @ Override public boolean visit ( QualifiedType node ) { } @ Override public boolean visit ( SingleVariableDeclaration node ) { } @ Override public boolean visit ( TypeDeclaration node ) { } @ Override public boolean visit ( VariableDeclarationFragment node ) { } }

Fix:
if ( ( TransformUtil . isInner ( type ) ) && ( ! ( TransformUtil . outerStatic ( type ) ) ) ) {