public ReloadableType getSuperRtype() {
		if (superRtype != null) {
			return superRtype;
		}
		if (superclazz == null) {
			// Not filled in yet? Why is this code different to the interface case?
			String name = this.getSlashedSupertypeName();
			if (name == null) {
				return null;
			}
			else {
				ReloadableType rtype = typeRegistry.getReloadableSuperType(name);
				superRtype = rtype;
				return superRtype;
			}
		}
		else {
			ClassLoader superClassLoader = superclazz.getClassLoader();
			TypeRegistry superTypeRegistry = TypeRegistry.getTypeRegistryFor(superClassLoader);
			superRtype = superTypeRegistry.getReloadableType(superclazz);
			return superRtype;
		}
	}
public ReloadableType getSuperRtype() {
		if (superRtype != null) {
			return superRtype;
		}
		if (superclazz == null) {
		
			String name = this.getSlashedSupertypeName();
			if (name == null) {
				return null;
			}
			else {
				ReloadableType rtype = typeRegistry.getReloadableSuperType(name);
				superRtype = rtype;
				return superRtype;
			}
		}
		else {
			ClassLoader superClassLoader = superclazz.getClassLoader();
			TypeRegistry superTypeRegistry = TypeRegistry.getTypeRegistryFor(superClassLoader);
			superRtype = superTypeRegistry.getReloadableType(superclazz);
			return superRtype;
		}
	}
public reloadabletype getsuperrtype() { if (superrtype != null) { return superrtype; } if (superclazz == null) { string name = this.getslashedsupertypename(); if (name == null) { return null; } else { reloadabletype rtype = typeregistry.getreloadablesupertype(name); superrtype = rtype; return superrtype; } } else { classloader superclassloader = superclazz.getclassloader(); typeregistry supertyperegistry = typeregistry.gettyperegistryfor(superclassloader); superrtype = supertyperegistry.getreloadabletype(superclazz); return superrtype; } }