PyClassTypeImpl (@NonNls String name) { PyClassTypeImpl val; synchronized (myTypeCache) { if (myBuiltinsFile != null) { if (myBuiltinsFile.getModificationStamp() != myModStamp) { myTypeCache.clear(); myModStamp = myBuiltinsFile.getModificationStamp(); } } val = myTypeCache.get(name); } if (val == null) { PyClass cls = getClass(name); if (cls != null) { // null may happen during testing val = new PyClassTypeImpl(cls, false); val.assertValid(name); synchronized (myTypeCache) { myTypeCache.put(name, val); } } } else { val.assertValid(name); } return val; }