@Test
public void testRecursiveSubtype() {

    ObjectType o1 = new ObjectType();
    o1.setProperty("f", o1);
    ObjectType o2 = new ObjectType();
    o2.setProperty("f", o2);
    Assert.assertTrue(Types.isSubtype(o1, o2));

    FunctionType f1 = new FunctionType(oneElementArrayList(null), oneElementArrayList("1"), new VoidType());
    f1.setParamType(f1, 0);
    FunctionType f2 = new FunctionType(oneElementArrayList(null), oneElementArrayList("1"), new VoidType());
    f2.setParamType(f2, 0);
    Assert.assertTrue(Types.isSubtype(f1, f2));
}