return s1 ;
}
Set<TypeName> s1map = getSuperClassOrder(s1) ;
Set<TypeName> s2map = getSuperClassOrder(s2) ;
s1map.retainAll(s2map) ;
final TypeName t ;
if (!s1map.isEmpty()) {
t = s1map.iterator().next();
}
else {
t = TypeName.OBJECT ;
}
Set<StubResolver> ifaces1 = new HashSet<StubResolver>() ;
Set<StubResolver> ifaces2 = new HashSet<StubResolver>() ;
addInterfaces(classPool,s1,t,ifaces1) ;
addInterfaces(classPool,s2,t,ifaces2) ;
ifaces1.retainAll(ifaces2) ;
int comb = s1.hashCode() ^ s2.hashCode();
if (comb < 0) comb = -comb ;
final TypeName cname = new TypeName("genclass"+comb);
ClassStub stub = new ClassStub(cname,classPool.new SimpleResolver(t),false) ;
for(StubResolver iface: ifaces1) {
stub = stub.addInterface(iface) ;
}
final ClassStub cstub = stub ;