Buggy code:
} return false ; } public String toString ( ) { } } public static final class TryCatch extends Code { public final String target ; public final ArrayList < Pair < Type , String > > catches ; TryCatch ( String target , Collection < Pair < Type , String > > catches ) { } public Code . TryCatch relabel ( Map < String , String > labels ) { } public int hashCode ( ) { } public boolean equals ( Object o ) { if ( o instanceof Code . TryCatch ) { Code . TryCatch ig = ( ( Code . TryCatch ) ( o ) ) ; return ( target . equals ( ig . target ) ) && ( catches . equals ( ig . catches ) ) ; } return false ; } public String toString ( ) { } } public static final class TryEnd extends Code . Label { TryEnd ( String label ) { } public Code . TryEnd relabel ( Map < String , String > labels ) { } public int hashCode ( ) { } public boolean equals ( Object o ) { if ( o instanceof Code . TryEnd ) { Code . TryEnd e = ( ( Code . TryEnd ) ( o ) ) ; return e . label . equals ( label ) ; } return false ; } public String toString ( ) { } } public static final class Negate extends Code { public final Type type ; private Negate ( Type type ) { } public int hashCode ( ) { } public boolean equals ( Object o ) { if ( o instanceof Code . Negate ) { Code . Negate bo = ( ( Code . Negate ) ( o ) ) ; return ( ( type ) == ( bo . type ) ) || ( ( ( type ) != null ) && ( type . equals ( bo . type ) ) ) ; } return false ; } public String toString ( ) { } } public static final class Invert extends Code { public final Type type ; private Invert ( Type type ) { } public int hashCode ( ) { } public boolean equals ( Object o ) { if ( o instanceof Code . Invert ) { Code . Invert bo = ( ( Code . Invert ) ( o ) ) ; return ( ( type ) == ( bo . type ) ) || ( ( ( type ) != null ) && ( type . equals ( bo . type ) ) ) ; } return false ; } public String toString ( ) { } } public static final class New extends Code { public final Reference type ; private New ( Type . Reference type ) { } public int hashCode ( ) { } public boolean equals ( Object o ) { if ( o instanceof Code . New ) { Code . New bo = ( ( Code . New ) ( o ) ) ; return ( ( type ) == ( bo . type ) ) || ( ( ( type ) != null ) && ( type . equals ( bo . type ) ) ) ; } return false ; } public String toString ( ) { } } public static final class TupleLoad extends Code { public final EffectiveTuple type ; public final int index ; private TupleLoad ( Type . EffectiveTuple type , int index ) { } public int hashCode ( ) { } public boolean equals ( Object o ) { if ( o instanceof Code . TupleLoad ) { Code . TupleLoad i = ( ( Code . TupleLoad ) ( o ) ) ; <START_BUG> return ( ( type ) == ( i . type ) ) || ( ( ( type ) != null ) && ( type . equals ( i . type ) ) ) ; <END_BUG> } return false ; } public String toString ( ) { } } public static final class Dereference extends Code { public final Reference type ; private Dereference ( Type . Reference type ) { } public int hashCode ( ) { } public boolean equals ( Object o ) { if ( o instanceof Code . Dereference ) { Code . Dereference bo = ( ( Code . Dereference ) ( o ) ) ; return ( ( type ) == ( bo . type ) ) || ( ( ( type ) != null ) && ( type . equals ( bo . type ) ) ) ; } return false ; } public String toString ( ) { } } public static class Void extends Code { public final Type type ; public final int slot ; private Void ( Type type , int slot ) { } public void slots ( Set < Integer > slots ) { } public Code remap ( Map < Integer , Integer > binding ) { } public int hashCode ( ) { } public boolean equals ( Object o ) { if ( o instanceof Code . Void ) { Code . Void i = ( ( Code . Void ) ( o ) ) ; return ( type . equals ( i . type ) ) && ( ( slot ) == ( i . slot ) ) ; } return false ; } public String toString ( ) { } } public static String toString ( String str , Type t ) { } public static String toString ( String str , Type before , Type after ) { } private static final ArrayList < Code > values = new ArrayList < Code > ( ) ;

Fix:
return ( ( index ) == ( i . index ) ) && ( ( ( type ) == ( i . type ) ) || ( ( ( type ) != null ) && ( type . equals ( i . type ) ) ) ) ;