test_class.file: sjsc/src/test/java/com/samsung/sjs/types/TypesTest.java
test_class.identifier: TypesTest
test_case.body: @Test
      public void testMutualRecursiveEquality() {
          ObjectType o1 = new ObjectType();
          ObjectType o2 = new ObjectType();
          o1.setProperty("f", o2);
          o2.setProperty("f", o1);
          Assert.assertTrue(Types.isEqual(o1, o2));
  
          FunctionType f1 = new FunctionType(oneElementArrayList(null), oneElementArrayList("1"), new VoidType());
          FunctionType f2 = new FunctionType(oneElementArrayList(null), oneElementArrayList("1"), new VoidType());
          f1.setParamType(f2, 0);
          f2.setParamType(f1, 0);
          Assert.assertTrue(Types.isEqual(f1, f2));
      }
test_case.class_method_signature: TypesTest.testMutualRecursiveEquality()
test_case.full_signature: @Test public void testMutualRecursiveEquality()
test_case.identifier: testMutualRecursiveEquality
test_case.invocations: setProperty setProperty assertTrue isEqual oneElementArrayList oneElementArrayList oneElementArrayList oneElementArrayList setParamType setParamType assertTrue isEqual
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testMutualRecursiveEquality()
focal_class.file: sjsc/src/main/java/com/samsung/sjs/types/Types.java
focal_class.identifier: Types
focal_class.class_method_signature: Types.isEqual(Type type1, Type type2)
focal_class.full_signature: public static boolean isEqual(Type type1, Type type2)
focal_class.identifier: isEqual
focal_class.modifiers: public static
focal_class.parameters: (Type type1, Type type2)
focal_class.return: boolean
focal_class.signature: boolean isEqual(Type type1, Type type2)
focal_class.class_method_signature: Types.isEqualHelper(Type type1, Type type2, Set<Pair<Type, Type>> queried)
focal_class.full_signature: private static boolean isEqualHelper(Type type1, Type type2, Set<Pair<Type, Type>> queried)
focal_class.identifier: isEqualHelper
focal_class.modifiers: private static
focal_class.parameters: (Type type1, Type type2, Set<Pair<Type, Type>> queried)
focal_class.return: boolean
focal_class.signature: boolean isEqualHelper(Type type1, Type type2, Set<Pair<Type, Type>> queried)
focal_class.class_method_signature: Types.isContainedIn(List<Type> types, Type type)
focal_class.full_signature: private static boolean isContainedIn(List<Type> types, Type type)
focal_class.identifier: isContainedIn
focal_class.modifiers: private static
focal_class.parameters: (List<Type> types, Type type)
focal_class.return: boolean
focal_class.signature: boolean isContainedIn(List<Type> types, Type type)
focal_class.class_method_signature: Types.isContainedIn(List<Type> types1, List<Type> types2)
focal_class.full_signature: private static boolean isContainedIn(List<Type> types1, List<Type> types2)
focal_class.identifier: isContainedIn
focal_class.modifiers: private static
focal_class.parameters: (List<Type> types1, List<Type> types2)
focal_class.return: boolean
focal_class.signature: boolean isContainedIn(List<Type> types1, List<Type> types2)
focal_class.class_method_signature: Types.mkArray(Type celltype)
focal_class.full_signature: public static Type mkArray(Type celltype)
focal_class.identifier: mkArray
focal_class.modifiers: public static
focal_class.parameters: (Type celltype)
focal_class.return: Type
focal_class.signature: Type mkArray(Type celltype)
focal_class.class_method_signature: Types.mkMap(Type celltype)
focal_class.full_signature: public static Type mkMap(Type celltype)
focal_class.identifier: mkMap
focal_class.modifiers: public static
focal_class.parameters: (Type celltype)
focal_class.return: Type
focal_class.signature: Type mkMap(Type celltype)
focal_class.class_method_signature: Types.mkCtor(List<Type> paramTypes, List<String> paramNames, Type returnType, Type proto)
focal_class.full_signature: public static ConstructorType mkCtor(List<Type> paramTypes, List<String> paramNames, Type returnType, Type proto)
focal_class.identifier: mkCtor
focal_class.modifiers: public static
focal_class.parameters: (List<Type> paramTypes, List<String> paramNames, Type returnType, Type proto)
focal_class.return: ConstructorType
focal_class.signature: ConstructorType mkCtor(List<Type> paramTypes, List<String> paramNames, Type returnType, Type proto)
focal_class.class_method_signature: Types.mkFunc(Type ret, List<Type> paramty)
focal_class.full_signature: public static FunctionType mkFunc(Type ret, List<Type> paramty)
focal_class.identifier: mkFunc
focal_class.modifiers: public static
focal_class.parameters: (Type ret, List<Type> paramty)
focal_class.return: FunctionType
focal_class.signature: FunctionType mkFunc(Type ret, List<Type> paramty)
focal_class.class_method_signature: Types.mkFunc(Type ret, List<Type> paramty, List<String> params)
focal_class.full_signature: public static FunctionType mkFunc(Type ret, List<Type> paramty, List<String> params)
focal_class.identifier: mkFunc
focal_class.modifiers: public static
focal_class.parameters: (Type ret, List<Type> paramty, List<String> params)
focal_class.return: FunctionType
focal_class.signature: FunctionType mkFunc(Type ret, List<Type> paramty, List<String> params)
focal_class.class_method_signature: Types.isStringType(Type targetType)
focal_class.full_signature: public static boolean isStringType(Type targetType)
focal_class.identifier: isStringType
focal_class.modifiers: public static
focal_class.parameters: (Type targetType)
focal_class.return: boolean
focal_class.signature: boolean isStringType(Type targetType)
focal_class.class_method_signature: Types.isArrayType(Type targetType)
focal_class.full_signature: public static boolean isArrayType(Type targetType)
focal_class.identifier: isArrayType
focal_class.modifiers: public static
focal_class.parameters: (Type targetType)
focal_class.return: boolean
focal_class.signature: boolean isArrayType(Type targetType)
focal_class.class_method_signature: Types.isMapType(Type type)
focal_class.full_signature: public static boolean isMapType(Type type)
focal_class.identifier: isMapType
focal_class.modifiers: public static
focal_class.parameters: (Type type)
focal_class.return: boolean
focal_class.signature: boolean isMapType(Type type)
focal_class.class_method_signature: Types.mkAny()
focal_class.full_signature: public static Type mkAny()
focal_class.identifier: mkAny
focal_class.modifiers: public static
focal_class.parameters: ()
focal_class.return: Type
focal_class.signature: Type mkAny()
focal_class.class_method_signature: Types.mkVoid()
focal_class.full_signature: public static Type mkVoid()
focal_class.identifier: mkVoid
focal_class.modifiers: public static
focal_class.parameters: ()
focal_class.return: Type
focal_class.signature: Type mkVoid()
focal_class.class_method_signature: Types.mkFloat()
focal_class.full_signature: public static FloatType mkFloat()
focal_class.identifier: mkFloat
focal_class.modifiers: public static
focal_class.parameters: ()
focal_class.return: FloatType
focal_class.signature: FloatType mkFloat()
focal_class.class_method_signature: Types.mkString()
focal_class.full_signature: public static StringType mkString()
focal_class.identifier: mkString
focal_class.modifiers: public static
focal_class.parameters: ()
focal_class.return: StringType
focal_class.signature: StringType mkString()
focal_class.class_method_signature: Types.mkBool()
focal_class.full_signature: public static BooleanType mkBool()
focal_class.identifier: mkBool
focal_class.modifiers: public static
focal_class.parameters: ()
focal_class.return: BooleanType
focal_class.signature: BooleanType mkBool()
focal_class.class_method_signature: Types.mkInt()
focal_class.full_signature: public static IntegerType mkInt()
focal_class.identifier: mkInt
focal_class.modifiers: public static
focal_class.parameters: ()
focal_class.return: IntegerType
focal_class.signature: IntegerType mkInt()
focal_class.class_method_signature: Types.mkProperty(final String name, final Type ty)
focal_class.full_signature: public static Property mkProperty(final String name, final Type ty)
focal_class.identifier: mkProperty
focal_class.modifiers: public static
focal_class.parameters: (final String name, final Type ty)
focal_class.return: Property
focal_class.signature: Property mkProperty(final String name, final Type ty)
focal_class.class_method_signature: Types.mkMethod(final Type thistype, final Type ret, List<Type> pty)
focal_class.full_signature: public static AttachedMethodType mkMethod(final Type thistype, final Type ret, List<Type> pty)
focal_class.identifier: mkMethod
focal_class.modifiers: public static
focal_class.parameters: (final Type thistype, final Type ret, List<Type> pty)
focal_class.return: AttachedMethodType
focal_class.signature: AttachedMethodType mkMethod(final Type thistype, final Type ret, List<Type> pty)
focal_class.class_method_signature: Types.mkMethod(final Type thistype, final Type ret, Type... args)
focal_class.full_signature: public static AttachedMethodType mkMethod(final Type thistype, final Type ret, Type... args)
focal_class.identifier: mkMethod
focal_class.modifiers: public static
focal_class.parameters: (final Type thistype, final Type ret, Type... args)
focal_class.return: AttachedMethodType
focal_class.signature: AttachedMethodType mkMethod(final Type thistype, final Type ret, Type... args)
focal_class.class_method_signature: Types.mkMethod(Type thistype, Type ret, List<String> pnames, List<Type> pty)
focal_class.full_signature: public static AttachedMethodType mkMethod(Type thistype, Type ret, List<String> pnames, List<Type> pty)
focal_class.identifier: mkMethod
focal_class.modifiers: public static
focal_class.parameters: (Type thistype, Type ret, List<String> pnames, List<Type> pty)
focal_class.return: AttachedMethodType
focal_class.signature: AttachedMethodType mkMethod(Type thistype, Type ret, List<String> pnames, List<Type> pty)
focal_class.class_method_signature: Types.mkObject(List<Property> props)
focal_class.full_signature: public static ObjectType mkObject(List<Property> props)
focal_class.identifier: mkObject
focal_class.modifiers: public static
focal_class.parameters: (List<Property> props)
focal_class.return: ObjectType
focal_class.signature: ObjectType mkObject(List<Property> props)
focal_class.class_method_signature: Types.mkMapIteratorType(Type t)
focal_class.full_signature: public static Type mkMapIteratorType(Type t)
focal_class.identifier: mkMapIteratorType
focal_class.modifiers: public static
focal_class.parameters: (Type t)
focal_class.return: Type
focal_class.signature: Type mkMapIteratorType(Type t)
focal_class.class_method_signature: Types.isComponentOf(Type type, IntersectionType iType)
focal_class.full_signature: public static boolean isComponentOf(Type type, IntersectionType iType)
focal_class.identifier: isComponentOf
focal_class.modifiers: public static
focal_class.parameters: (Type type, IntersectionType iType)
focal_class.return: boolean
focal_class.signature: boolean isComponentOf(Type type, IntersectionType iType)
focal_class.class_method_signature: Types.isSubtype(Type subType, Type superType)
focal_class.full_signature: public static boolean isSubtype(Type subType, Type superType)
focal_class.identifier: isSubtype
focal_class.modifiers: public static
focal_class.parameters: (Type subType, Type superType)
focal_class.return: boolean
focal_class.signature: boolean isSubtype(Type subType, Type superType)
focal_class.class_method_signature: Types.isRefType(Type t)
focal_class.full_signature: public static boolean isRefType(Type t)
focal_class.identifier: isRefType
focal_class.modifiers: public static
focal_class.parameters: (Type t)
focal_class.return: boolean
focal_class.signature: boolean isRefType(Type t)
focal_class.class_method_signature: Types.usableAsConstructor(Type t)
focal_class.full_signature: public static boolean usableAsConstructor(Type t)
focal_class.identifier: usableAsConstructor
focal_class.modifiers: public static
focal_class.parameters: (Type t)
focal_class.return: boolean
focal_class.signature: boolean usableAsConstructor(Type t)
focal_class.class_method_signature: Types.isSubtypeish(Type subType, Type superType)
focal_class.full_signature: public static boolean isSubtypeish(Type subType, Type superType)
focal_class.identifier: isSubtypeish
focal_class.modifiers: public static
focal_class.parameters: (Type subType, Type superType)
focal_class.return: boolean
focal_class.signature: boolean isSubtypeish(Type subType, Type superType)
focal_class.class_method_signature: Types.coarseUpperBound(Type t1, Type t2)
focal_class.full_signature: public static Type coarseUpperBound(Type t1, Type t2)
focal_class.identifier: coarseUpperBound
focal_class.modifiers: public static
focal_class.parameters: (Type t1, Type t2)
focal_class.return: Type
focal_class.signature: Type coarseUpperBound(Type t1, Type t2)
focal_class.class_method_signature: Types.coarseLowerBound(Type t1, Type t2)
focal_class.full_signature: public static Type coarseLowerBound(Type t1, Type t2)
focal_class.identifier: coarseLowerBound
focal_class.modifiers: public static
focal_class.parameters: (Type t1, Type t2)
focal_class.return: Type
focal_class.signature: Type coarseLowerBound(Type t1, Type t2)
focal_class.class_method_signature: Types.lowestSubtype(Type t)
focal_class.full_signature: public static Type lowestSubtype(Type t)
focal_class.identifier: lowestSubtype
focal_class.modifiers: public static
focal_class.parameters: (Type t)
focal_class.return: Type
focal_class.signature: Type lowestSubtype(Type t)
focal_method.body: public static boolean isEqual(Type type1, Type type2){
  		return isEqualHelper(type1, type2, HashSetFactory.make());
  	}
focal_method.class_method_signature: Types.isEqual(Type type1, Type type2)
focal_method.full_signature: public static boolean isEqual(Type type1, Type type2)
focal_method.identifier: isEqual
focal_method.invocations: isEqualHelper make
focal_method.modifiers: public static
focal_method.parameters: (Type type1, Type type2)
focal_method.return: boolean
focal_method.signature: boolean isEqual(Type type1, Type type2)