Buggy code:
public LocalBinding binding , Compiler . Expr init ) { } } public static class LetFnExpr implements Compiler . Expr { public final PersistentVector bindingInits ; public final Compiler . Expr body ; public LetFnExpr ( PersistentVector bindingInits , Compiler . Expr body ) { } static class Parser implements Compiler . IParser { public Compiler . Expr parse ( Compiler . C context , Object frm ) { } } public Object eval ( ) { } public void emit ( Compiler . C context , Compiler . ObjExpr objx , GeneratorAdapter gen ) { } public boolean hasJavaClass ( ) { } public Class getJavaClass ( ) { } } public static class LetExpr implements Compiler . Expr , Compiler . MaybePrimitiveExpr { public final PersistentVector bindingInits ; public final Compiler . Expr body ; public final boolean isLoop ; public LetExpr ( PersistentVector bindingInits , Compiler . Expr body , boolean isLoop ) { } static class Parser implements Compiler . IParser { public Compiler . Expr parse ( Compiler . C context , Object frm ) { } } public Object eval ( ) { } public void emit ( Compiler . C context , Compiler . ObjExpr objx , GeneratorAdapter gen ) { } public void emitUnboxed ( Compiler . C context , Compiler . ObjExpr objx , GeneratorAdapter gen ) { } public void doEmit ( Compiler . C context , Compiler . ObjExpr objx , GeneratorAdapter gen , boolean emitUnboxed ) { } public boolean hasJavaClass ( ) { } public Class getJavaClass ( ) { } public boolean canEmitPrimitive ( ) { } } public static class RecurExpr implements Compiler . Expr { public final IPersistentVector args ; public final IPersistentVector loopLocals ; final int line ; final String source ; public RecurExpr ( IPersistentVector loopLocals , IPersistentVector args , int line , String source ) { } public Object eval ( ) { } public void emit ( Compiler . C context , Compiler . ObjExpr objx , GeneratorAdapter gen ) { } public boolean hasJavaClass ( ) { } public Class getJavaClass ( ) { } static class Parser implements Compiler . IParser { public Compiler . Expr parse ( Compiler . C context , Object frm ) { } } } private static Compiler . LocalBinding registerLocal ( Symbol sym , Symbol tag , Compiler . Expr init , boolean isArg ) { } private static int getAndIncLocalNum ( ) { } public static Compiler . Expr analyze ( Compiler . C context , Object form ) { } private static Compiler . Expr analyze ( Compiler . C context , Object form , String name ) { } public static class CompilerException extends RuntimeException { public final String source ; public CompilerException ( String source , int line , Throwable cause ) { } public String toString ( ) { } } public static Var isMacro ( Object op ) { } public static IFn isInline ( Object op , int arity ) { } public static boolean namesStaticMember ( Symbol sym ) { } public static Object preserveTag ( ISeq src , Object dst ) { } public static Object macroexpand1 ( Object x ) { } static Object macroexpand ( Object form ) { } private static Compiler . Expr analyzeSeq ( Compiler . C context , ISeq form , String name ) { } static String errorMsg ( String source , int line , String s ) { } public static Object eval ( Object form ) { } public static Object eval ( Object form , boolean freshLoader ) { } private static int registerConstant ( Object o ) { } private static Compiler . KeywordExpr registerKeyword ( Keyword keyword ) { } private static int registerKeywordCallsite ( Keyword keyword ) { } private static int registerProtocolCallsite ( Var v ) { } private static void registerVarCallsite ( Var v ) { } static ISeq fwdPath ( Compiler . PathNode p1 ) { } static Compiler . PathNode commonPath ( Compiler . PathNode n1 , Compiler . PathNode n2 ) { } static void addAnnotation ( Object visitor , IPersistentMap meta ) { } static void addParameterAnnotation ( Object visitor , IPersistentMap meta , int i ) { } private static Compiler . Expr analyzeSymbol ( Symbol sym ) { } static String destubClassName ( String className ) { } static Type getType ( Class c ) { } static Object resolve ( Symbol sym , boolean allowPrivate ) { } static Object resolve ( Symbol sym ) { } static Namespace namespaceFor ( Symbol sym ) { } static Namespace namespaceFor ( Namespace inns , Symbol sym ) { } public static Object resolveIn ( Namespace n , Symbol sym , boolean allowPrivate ) { } public static Object maybeResolveIn ( Namespace n , Symbol sym ) { } static Var lookupVar ( Symbol sym , boolean internNew , boolean registerMacro ) { } static Var lookupVar ( Symbol sym , boolean internNew ) { } private static void registerVar ( Var var ) { } static Namespace currentNS ( ) { } static void closeOver ( Compiler . LocalBinding b , Compiler . ObjMethod method ) { } static Compiler . LocalBinding referenceLocal ( Symbol sym ) { } private static Symbol tagOf ( Object o ) { } public static Object loadFile ( String file ) throws IOException { } public static Object load ( Reader rdr ) { } public static Object load ( Reader rdr , String sourcePath , String sourceName ) { } public static void writeClassFile ( String internalName , byte [ ] bytecode ) throws IOException { } public static void pushNS ( ) { } public static void pushNSandLoader ( ClassLoader loader ) { } public static ILookupThunk getLookupThunk ( Object target , Keyword k ) { } static void compile1 ( GeneratorAdapter gen , Compiler . ObjExpr objx , Object form ) { } public static Object compile ( Reader rdr , String sourcePath , String sourceName ) throws IOException { } public static class NewInstanceExpr extends Compiler . ObjExpr { IPersistentCollection methods ; Map < IPersistentVector , java . lang . reflect . Method > mmap ; Map < IPersistentVector , Set < Class > > covariants ; public NewInstanceExpr ( Object tag ) { } static class DeftypeParser implements Compiler . IParser { public Compiler . Expr parse ( Compiler . C context , final Object frm ) { } } static class ReifyParser implements Compiler . IParser { public Compiler . Expr parse ( Compiler . C context , Object frm ) { } } static Compiler . ObjExpr build ( IPersistentVector interfaceSyms , IPersistentVector fieldSyms , Symbol thisSym , String tagName , Symbol className , Symbol typeTag , ISeq methodForms , Object frm ) { Compiler . NewInstanceExpr ret = new Compiler . NewInstanceExpr ( null ) ; ret . src = frm ; ret . name = className . toString ( ) ; ret . classMeta = RT . meta ( className ) ; ret . internalName = ret . name . replace ( '.' , '//' ) ; ret . objtype = Type . getObjectType ( ret . internalName ) ; if ( thisSym != null ) ret . thisName = thisSym . name ; if ( fieldSyms != null ) { IPersistentMap fmap = PersistentHashMap . EMPTY ; Object [ ] closesvec = new Object [ 2 * ( fieldSyms . count ( ) ) ] ; for ( int i = 0 ; i < ( fieldSyms . count ( ) ) ; i ++ ) { Symbol sym = ( ( Symbol ) ( fieldSyms . nth ( i ) ) ) ; Compiler . LocalBinding lb = new Compiler . LocalBinding ( ( - 1 ) , sym , null , new Compiler . MethodParamExpr ( Compiler . tagClass ( Compiler . tagOf ( sym ) ) ) , false , null ) ; fmap = fmap . assoc ( sym , lb ) ; closesvec [ ( i * 2 ) ] = lb ; closesvec [ ( ( i * 2 ) + 1 ) ] = lb ; } ret . closes = new PersistentArrayMap ( closesvec ) ; ret . fields = fmap ; <START_BUG> for ( int i = ( fieldSyms . count ( ) ) - 1 ; ( i >= 0 ) && ( ( ( Symbol ) ( fieldSyms . nth ( i ) ) ) . name . startsWith ( "__" ) ) ; -- i ) <END_BUG>

Fix:
for ( int i = ( fieldSyms . count ( ) ) - 1 ; ( i >= 0 ) && ( ( ( ( Symbol ) ( fieldSyms . nth ( i ) ) ) . name . equals ( "__meta" ) ) || ( ( ( Symbol ) ( fieldSyms . nth ( i ) ) ) . name . equals ( "__extmap" ) ) ) ; -- i )