int i = fldType.rawType.classTypeName.lastIndexOf("$"+snm);
if (i == -1) {
return klass;
}
String rtnm = fldType.rawType.classTypeName.substring(0, i);
InterimParameterizedType newPT = null;
if (fldType.ownerType == null) {
try {
if (AuxiliaryLoader.findClass(rtnm.substring(1).replace('/', '.'), startPoint) != null) {
// telescoping a final unit:
InterimClassType newCT = new InterimClassType();
newCT.classTypeName = rtnm;
fldType.ownerType = (InterimType) newCT;
}
} catch(ClassNotFoundException _) {
return null;
}
return klass;
} else {
if (!rtnm.equals((fldType.ownerType instanceof InterimParameterizedType ? ((InterimParameterizedType)fldType.ownerType).rawType.classTypeName : ((InterimClassType)fldType.ownerType).classTypeName))) {
try {
if (AuxiliaryLoader.findClass(rtnm.substring(1).replace('/', '.'), startPoint) != null) {
// telescoping an intermediate unit:
newPT = new InterimParameterizedType();
/* ### */ newPT.signature = fldType.signature.substring(0, fldType.signature.lastIndexOf("$"+snm)); //XXX: ???
newPT.currentClauseName = snm;
newPT.parameters = null;
newPT.rawType = new InterimClassType();
newPT.rawType.classTypeName = rtnm;