.setInfo(MethodType(Symbol.EMPTY_ARRAY, nclazz.info()));       Scope.Entry e = statics.lookupEntry(alias.name); if (e != Scope.Entry.NONE) statics.unlink(e); statics.enter(alias);
.setInfo(MethodType(Symbol.EMPTY_ARRAY, alias.info())); statics.enterNoHide(alias);
    protected String doComplete0(Symbol clazz) {	clazz.owner().initialize(); //???	if (make == null)	    make = new JavaTypeCreator(global.definitions);	Type type = (Type)importer.getMember(clazz);	if (type == null)	    type = Type.GetType(global.primitives.getCLRClassName(clazz));	clazz.flags = translateAttributes(type);	Type[] ifaces = type.getInterfaces();	scalac.symtab.Type[] baseTypes = new scalac.symtab.Type[ifaces.length+1];	baseTypes[0] = type.BaseType == null ? global.definitions.ANYREF_TYPE()	    : getCLRType(type.BaseType);	for (int i = 0; i < ifaces.length; i++)	    baseTypes[i + 1] = getCLRType(ifaces[i]);	Scope members = new Scope();	Scope statics = new Scope();	scalac.symtab.Type classType =	    scalac.symtab.Type.compoundType(baseTypes, members, clazz);	clazz.setInfo(classType);	Symbol staticsClass = clazz.module().moduleClass();	if (staticsClass.isModuleClass()) {	    scalac.symtab.Type staticsInfo = scalac.symtab.Type.compoundType		(scalac.symtab.Type.EMPTY_ARRAY, statics, staticsClass);	    staticsClass.setInfo(staticsInfo);	    clazz.module().setInfo(scalac.symtab.Type.typeRef				   (staticsClass.owner().thisType(),				    staticsClass, scalac.symtab.Type.EMPTY_ARRAY));	}        scalac.symtab.Type ctype = make.classType(clazz);	// import nested types	Type[] nestedTypes = type.getNestedTypes();	for (int i = 0; i < nestedTypes.length; i++) {	    Type ntype = nestedTypes[i];	    if (ntype.IsNestedPrivate() || ntype.IsNestedAssembly()		|| ntype.IsNestedFamANDAssem())		continue;	    int j = ntype.FullName.lastIndexOf('.');	    String n = (j < 0 ? ntype.FullName : ntype.FullName.substring(j + 1))		.replace('+', '#');	    Name classname = Name.fromString(n).toTypeName();	    Name aliasname = Name.fromString(ntype.Name).toTypeName();	    // put the class at the level of its outermost class	    ClassSymbol nclazz = new ClassSymbol(classname, clazz.owner(), this);	    importer.map(nclazz, ntype);	    // create an alias in the module of the outer class	    AliasTypeSymbol alias =		new AliasTypeSymbol(Position.NOPOS, aliasname, clazz.module(),				    translateAttributes(ntype));	    nclazz.allConstructors().setInfo(this);	    nclazz.module().setInfo(this);	    //	    alias.setInfo(scalac.symtab.Type			  .typeRef(clazz.owner().thisType(),				   nclazz, scalac.symtab.Type.EMPTY_ARRAY));	    alias.allConstructors()		.setInfo(MethodType(Symbol.EMPTY_ARRAY, nclazz.info()));// 	    statics.enter(nclazz);// 	    Scope.Entry e = statics.lookupEntry(clazz.module().name);// 	    if (e != Scope.Entry.NONE)// 		statics.unlink(e);// 	    statics.enter(nclazz.module()); 	    Scope.Entry e = statics.lookupEntry(alias.name); // Why is this ??? 	    if (e != Scope.Entry.NONE) 		statics.unlink(e);	    statics.enter(alias);	}	// read field information	FieldInfo[] fields = type.getFields();	for (int i = 0; i < fields.length; i++) {	    if (fields[i].IsPrivate() || fields[i].IsAssembly()		|| fields[i].IsFamilyAndAssembly())		continue;	    int mods = translateAttributes(fields[i]);	    Name name = Name.fromString(fields[i].Name);	    scalac.symtab.Type fieldType = getCLRType(fields[i].FieldType);	    if (fields[i].IsLiteral())		fieldType = make.constantType(fieldType, fields[i].getValue());	    Symbol owner = fields[i].IsStatic() ? staticsClass : clazz;	    Symbol field = new TermSymbol(Position.NOPOS, name, owner, mods);	    field.setInfo(fieldType);	    (fields[i].IsStatic() ? statics : members).enterOrOverload(field);	    importer.map(field, fields[i]);	}	//PropertyInfo[] props = type.GetProperties(bindingFlags);	PropertyInfo[] props = type.getProperties();	for (int i = 0; i < props.length; i++) {	    MethodInfo getter = props[i].GetGetMethod(true);	    MethodInfo setter = props[i].GetSetMethod(true);	    if (getter == null || getter.GetParameters().length > 0)		continue;	    assert props[i].PropertyType == getter.ReturnType;	    scalac.symtab.Type proptype = getCLSType(props[i].PropertyType);	    if (proptype == null)		continue;	    Name n = Name.fromString(props[i].Name);	    scalac.symtab.Type mtype =		scalac.symtab.Type.PolyType(Symbol.EMPTY_ARRAY, proptype);	    int mods = translateAttributes(getter);	    Symbol owner = getter.IsStatic() ? staticsClass : clazz;	    Symbol method = new TermSymbol(Position.NOPOS, n, owner, mods);	    setParamOwners(mtype, method);	    method.setInfo(mtype);	    (getter.IsStatic() ? statics : members).enterOrOverload(method);	    importer.map(method, getter);	    if (setter == null)		continue;	    assert getter.IsStatic() == setter.IsStatic();	    assert setter.ReturnType == importer.VOID;	    mtype = methodType(setter, getCLSType(importer.VOID));	    if (mtype == null)		continue;	    n = n.append(Names._EQ);	    mods = translateAttributes(setter);	    method = new TermSymbol(Position.NOPOS, n, owner, mods);	    setParamOwners(mtype, method);	    method.setInfo(mtype);	    (setter.IsStatic() ? statics : members).enterOrOverload(method);	    importer.map(method, setter);	}	//MethodInfo[] methods = type.GetMethods(bindingFlags);	MethodInfo[] methods = type.getMethods();	for (int i = 0; i < methods.length; i++) {	    if ((importer.getSymbol(methods[i]) != null)		|| methods[i].IsPrivate()		|| methods[i].IsAssembly()		|| methods[i].IsFamilyAndAssembly())		continue;	    scalac.symtab.Type rettype = getCLSType(methods[i].ReturnType);	    if (rettype == null)		continue;	    scalac.symtab.Type mtype = methodType(methods[i], rettype);	    if (mtype == null)		continue;	    String name = methods[i].Name;	    Name n;	    if (name.equals("GetHashCode")) n = Names.hashCode;	    else if (name.equals("Equals")) n = Names.equals;	    else if (name.equals("ToString")) n = Names.toString;	    else n = Name.fromString(name);	    int mods = translateAttributes(methods[i]);	    Symbol owner = methods[i].IsStatic() ? staticsClass : clazz;	    Symbol method = new TermSymbol(Position.NOPOS, n, owner, mods);	    setParamOwners(mtype, method);	    method.setInfo(mtype);	    (methods[i].IsStatic() ? statics : members).enterOrOverload(method);	    importer.map(method, methods[i]);	}	//ConstructorInfo[] constrs = type.GetConstructors(bindingFlags);	ConstructorInfo[] constrs = type.getConstructors();	for (int i = 0; i < constrs.length; i++) {	    if (constrs[i].IsStatic() || constrs[i].IsPrivate()		|| constrs[i].IsAssembly() || constrs[i].IsFamilyAndAssembly())		continue;	    scalac.symtab.Type mtype = methodType(constrs[i], ctype);	    if (mtype == null)		continue;	    Symbol constr = clazz.primaryConstructor();	    if (constr.isInitialized()) constr = clazz.addConstructor();	    int mods = translateAttributes(constrs[i]);	    TermSymbol.newConstructor(clazz, mods).copyTo(constr);	    setParamOwners(mtype, constr);	    constr.setInfo(mtype);//  	    System.out.println(clazz.allConstructors() + ": "//  			       + clazz.allConstructors().info());	    importer.map(constr, constrs[i]);	}	Symbol constr = clazz.primaryConstructor();	if (!constr.isInitialized()) {	    constr.setInfo(scalac.symtab.Type.MethodType				(Symbol.EMPTY_ARRAY, ctype));	    if ((clazz.flags & Modifiers.INTERFACE) == 0)		constr.flags |= Modifiers.PRIVATE;	}	return "assembly [" + type.Assembly.GetName().Name + "]" + type;    }