RefTypeInfo (@NotNull String jvmName, boolean useGuesser) { ClassEntry p = myMap.get(jvmName); if (p != null) { if (p instanceof RegularClassEntry) { return new RefTypeInfo(((RegularClassEntry)p).myName); } if (p instanceof StringInnerClassEntry) { StringInnerClassEntry entry = (StringInnerClassEntry)p; RefTypeInfo outer = toTypeInfo(entry.myOuterName, false); p = new TypeInfoInnerClassEntry(outer, entry.myInnerName); myMap.put(jvmName, p); } assert p instanceof TypeInfoInnerClassEntry; return new RefTypeInfo(((TypeInfoInnerClassEntry)p).myInnerName, ((TypeInfoInnerClassEntry)p).myOuterType); } else if (jvmName.indexOf('$') >= 0 && !jvmName.equals(myTopLevelName) && (useGuesser || !myTrustInnerClasses)) { return StubBuildingVisitor.GUESSING_PROVIDER.toTypeInfo(jvmName); } String name = jvmName.replace('/', '.'); myMap.put(jvmName, new RegularClassEntry(name)); return new RefTypeInfo(name); }