Buggy code:
public Type element ( ) { } boolean nonEmpty ( ) { } } public static final class List extends Type . Compound { private List ( Automaton automaton ) { } public Type element ( ) { } boolean nonEmpty ( ) { } } public static final class Process extends Type . Compound { private Process ( Automaton automaton ) { } public Type element ( ) { } } public static final class Dictionary extends Type . Compound { private Dictionary ( Automaton automaton ) { } public Type key ( ) { } public Type value ( ) { } } public static final class Record extends Type . Compound { private Record ( Automaton automaton ) { } public boolean isOpen ( ) { } public HashSet < String > keys ( ) { } public HashMap < String , Type > fields ( ) { } public static final class State extends ArrayList < String > { public final boolean isOpen ; public State ( boolean isOpen ) { } public State ( boolean isOpen , Collection < String > values ) { } public boolean equals ( Object o ) { } } } public static final class Union extends Type . Compound { private Union ( Automaton automaton ) { } public HashSet < Type > bounds ( ) { } } public static final class Negation extends Type . Compound { private Negation ( Automaton automaton ) { } public Type element ( ) { } } public static class Function extends Type . Compound { Function ( Automaton automaton ) { } public Type ret ( ) { } public Type throwsClause ( ) { } public ArrayList < Type > params ( ) { } } public static final class Method extends Type . Function { Method ( Automaton automaton ) { } public Type . Process receiver ( ) { } public Type ret ( ) { } public Type throwsClause ( ) { } public ArrayList < Type > params ( ) { } } public static final String toString ( Automaton automaton ) { } private static final String toString ( int index , BitSet visited , String [ ] headers , Automaton automaton ) { } private static final String toBracesString ( int index , BitSet visited , String [ ] headers , Automaton automaton ) { } private static final void findHeaders ( int index , BitSet visited , BitSet onStack , BitSet headers , Automaton automaton ) { } private static final char [ ] headers = new char [ ] { 'X' , 'Y' , 'Z' , 'U' , 'V' , 'W' , 'L' , 'M' , 'N' , 'O' , 'P' , 'Q' , 'R' , 'S' , 'T' } ; private static String headerTitle ( int count ) { } public static final byte leafKind ( Type . Leaf leaf ) { } public static final Type construct ( Automaton automaton ) { } private static Type construct ( byte kind , Object data , Type ... children ) { } private static Type construct ( byte kind , Object data , Collection < Type > children ) { } public static final Automaton destruct ( Type t ) { } private static Automaton normalise ( Automaton automaton ) { } public static final byte K_VOID = 0 ; public static final byte K_ANY = 1 ; public static final byte K_META = 2 ; public static final byte K_NULL = 3 ; public static final byte K_BOOL = 4 ; public static final byte K_BYTE = 5 ; public static final byte K_CHAR = 6 ; public static final byte K_INT = 7 ; public static final byte K_RATIONAL = 8 ; public static final byte K_STRING = 9 ; public static final byte K_TUPLE = 10 ; public static final byte K_SET = 11 ; public static final byte K_LIST = 12 ; public static final byte K_DICTIONARY = 13 ; public static final byte K_PROCESS = 14 ; public static final byte K_RECORD = 15 ; public static final byte K_UNION = 16 ; public static final byte K_NEGATION = 17 ; public static final byte K_FUNCTION = 18 ; public static final byte K_METHOD = 19 ; public static final byte K_HEADLESS = 20 ; public static final byte K_NOMINAL = 21 ; public static final byte K_LABEL = 22 ; private static final ArrayList < Automaton > values = new ArrayList < Automaton > ( ) ; private static final HashMap < Automaton , Integer > cache = new HashMap < Automaton , Integer > ( ) ; private static < T extends Automaton > T get ( T type ) { } private static boolean canonicalisation = true ; private static int equalsCount = 0 ; private static int normalisedCount = 0 ; private static int unminimisedCount = 0 ; private static int minimisedCount = 0 ; private static final HashSet < Type > distinctTypes = new HashSet < Type > ( ) ; public static void shutdown ( ) { } public static void main ( String [ ] args ) { <START_BUG> Type from = Type . fromString ( "[int]|real" ) ; <END_BUG> Type to = Type . fromString ( "![int]" ) ; System . out . println ( ( ( ( ( from + "<seq2seq4repair_space>:><seq2seq4repair_space>" ) + to ) + "<seq2seq4repair_space>=<seq2seq4repair_space>" ) + ( Type . isSubtype ( from , to ) ) ) ) ; System . out . println ( ( ( ( ( from + "<seq2seq4repair_space>&<seq2seq4repair_space>" ) + to ) + "<seq2seq4repair_space>=<seq2seq4repair_space>" ) + ( Type . intersect ( from , to ) ) ) ) ; } public static Type contractive ( ) { } public static Type linkedList ( int n ) { } public static Type innerLinkedList ( int n ) { } }

Fix:
Type from = Type . fromString ( "[int]" ) ;