Buggy code:
@ Override public void generate ( final Object visitor ) { } } public static class GenNodeFieldStore extends GenNode implements GenNode . IGenNodeStmt { public String varName ; public String enclosingType ; public String type ; public boolean isStatic ; public GenNodeFieldStore ( final String varName , final String enclosingType , final String type , final boolean isStatic ) { } @ Override public void generate ( final Object visitor ) { } } public static class GenNodeVarStore extends GenNode { public GenNode . EnumInstructionOperand operand ; public int varID ; public GenNodeVarStore ( final GenNode . EnumInstructionOperand instructionType , final int localID ) { } @ Override public void generate ( final Object visitor ) { } } public static class GenNodeVarLoad extends GenNode implements GenNode . IGenNodeExpr { public GenNode . EnumInstructionOperand operand ; public int varID ; public GenNodeVarLoad ( final GenNode . EnumInstructionOperand operand , final int varID ) { } @ Override public void generate ( final Object visitor ) { } } public static class GenNodeFuncCall extends GenNode implements GenNode . IGenNodeExpr , GenNode . IGenNodeStmt { public String enclosingType ; public String name ; public String signature ; public boolean interfaceFunc ; public boolean privateFunc ; public boolean staticFunc ; public boolean constructor ; public GenNodeFuncCall ( final String enclosingType , final String name , final String signature , final boolean interfaceFunc , final boolean privateFunc , final boolean staticFunc , final boolean constructor ) { } @ Override public void generate ( final Object visitor ) { } } public static class GenNodeNull extends GenNode implements GenNode . IGenNodeExpr { public GenNodeNull ( ) { } @ Override public void generate ( final Object visitor ) { } } public static class GenNodeInt extends GenNode implements GenNode . IGenNodeExpr { public int val ; public GenNodeInt ( final int val ) { } @ Override public void generate ( final Object visitor ) { } } public static class GenNodeString extends GenNode implements GenNode . IGenNodeExpr { public String val ; public GenNodeString ( final String val ) { } @ Override public void generate ( final Object visitor ) { } } public static class GenNodeDouble extends GenNode implements GenNode . IGenNodeExpr { public double val ; public GenNodeDouble ( final double val ) { } @ Override public void generate ( final Object visitor ) { } } public static class GenNodeFloat extends GenNode implements GenNode . IGenNodeExpr { public float val ; public GenNodeFloat ( final float val ) { } @ Override public void generate ( final Object visitor ) { } } public static class GenNodeLong extends GenNode implements GenNode . IGenNodeExpr { public long val ; public GenNodeLong ( final long val ) { } @ Override public void generate ( final Object visitor ) { } } public static class GenNodeReturn extends GenNode { GenNode . EnumInstructionOperand type ; public GenNodeReturn ( final GenNode . EnumInstructionOperand type ) { } public GenNodeReturn ( ) { } @ Override public void generate ( final Object visitor ) { } } public static class GenNodeThis extends GenNode { public GenNodeThis ( ) { } @ Override public void generate ( final Object visitor ) { } } public static class GenNodeConditionalJump extends GenNode { public IExpression expr ; public Label label ; public int opcode ; LinkedList < Integer > extraOpcodes = new LinkedList < Integer > ( ) ; public GenNodeConditionalJump ( final IExpression expr , final Label label ) { } public GenNodeConditionalJump ( final int opcode , final Label label ) { } public void compute ( ) { if ( ( expr ) != null ) if ( ( expr ) instanceof NodeBinary ) { final NodeBinary node = ( ( NodeBinary ) ( expr ) ) ; if ( ( node . operatorOverloadFunc ) == null ) { <START_BUG> final GenNode . EnumInstructionOperand type = Semantics . getPrecedentType ( node . exprType1 , node . exprType2 ) . getInstructionType ( ) ; <END_BUG> if ( ( node . exprType1 . getInstructionType ( ) ) != type ) GenNode . addFuncStmt ( new GenNode . GenNodePrimitiveCast ( node . exprType1 . getInstructionType ( ) , type ) ) ; else if ( ( node . exprType2 . getInstructionType ( ) ) != type ) GenNode . addFuncStmt ( new GenNode . GenNodePrimitiveCast ( node . exprType2 . getInstructionType ( ) , type ) ) ; switch ( type ) { case INT : case BYTE : case SHORT : case BOOL : node . expr1 . generate ( ) ; node . expr2 . generate ( ) ; switch ( node . operator . operation ) { case LESS : opcode = IF_ICMPGE ; break ; case GREATER : opcode = IF_ICMPLE ; break ; case EQUAL : opcode = IF_ICMPNE ; break ; case NOT_EQUAL : opcode = IF_ICMPEQ ; break ; case LESS_EQUAL : opcode = IF_ICMPGT ; break ; case GREATER_EQUAL : opcode = IF_ICMPLT ; break ; } break ; case LONG : case DOUBLE : case FLOAT : node . expr1 . generate ( ) ; node . expr2 . generate ( ) ; if ( type == ( GenNode . EnumInstructionOperand . LONG ) ) extraOpcodes . add ( LCMP ) ; else if ( type == ( GenNode . EnumInstructionOperand . DOUBLE ) ) extraOpcodes . add ( DCMPG ) ; else if ( type == ( GenNode . EnumInstructionOperand . FLOAT ) ) extraOpcodes . add ( FCMPG ) ; switch ( node . operator . operation ) { case LESS : opcode = IFGE ; break ; case GREATER : opcode = IFLE ; break ; case EQUAL : opcode = IFNE ; break ; case NOT_EQUAL : opcode = IFEQ ; break ; case LESS_EQUAL : opcode = IFGT ; break ; case GREATER_EQUAL : opcode = IFLT ;

Fix:
final GenNode . EnumInstructionOperand type = TypeI . getPrecedentType ( node . exprType1 , node . exprType2 ) . getInstructionType ( ) ;