private IGosuClass createJavaProxyImmediately(IJavaTypeInternal type) { IGosuClassInternal gsAdapterClass; if (type.getEnclosingType() != null) { // Ensure enclosing type is proxied; it contains the gosu source for the inner type IGosuClass outerProxy = (IGosuClass) TypeSystem.getByFullName( getProxyName((IJavaType) TypeLord.getOuterMostEnclosingClass(type))); outerProxy.getInnerClasses(); if (!outerProxy.isCompilingDeclarations()) { gsAdapterClass = (IGosuClassInternal) outerProxy.getInnerClass( type.getRelativeName().substring(type.getRelativeName().indexOf('.') + 1)); if (gsAdapterClass == null) { TypeSystem.refresh((ITypeRef) outerProxy, true); gsAdapterClass = (IGosuClassInternal) outerProxy.getInnerClass( type.getRelativeName().substring(type.getRelativeName().indexOf('.') + 1)); } } else { return null; } } else { if (type.isInterface()) { gsAdapterClass = (IGosuClassInternal) createJavaInterfaceProxy(type); } else { gsAdapterClass = (IGosuClassInternal) createJavaClassProxy(type); } } type.setAdapterClass(gsAdapterClass); gsAdapterClass.setJavaType(type); return gsAdapterClass; }