abort("scala.dll");
findAssembly("scala.dll", true);
    private CLRTypes(CompilerCommand args) {	this.args = args;	scala.tools.util.ClassPath.addFilesInPath(            assemrefs, args.assemrefs.value);	Assembly mscorlib = findAssembly("mscorlib.dll", true);	Type.initMSCORLIB(mscorlib);        findAssembly("scala.dll", false);	findAllAssemblies();        if (getType("scala.Int") == null) {            abort("scala.dll");        }	BYTE    = getType("System.SByte");	UBYTE   = getType("System.Byte");	CHAR    = getType("System.Char");	SHORT   = getType("System.Int16");	USHORT  = getType("System.UInt16");	INT     = getType("System.Int32");	UINT    = getType("System.UInt32");	LONG    = getType("System.Int64");	ULONG   = getType("System.UInt64");	FLOAT   = getType("System.Single");	DOUBLE  = getType("System.Double");	BOOLEAN = getType("System.Boolean");	VOID    = getType("System.Void");	ENUM    = getType("System.Enum");	DELEGATE = getType("System.MulticastDelegate");	OBJECT = getType("System.Object");	STRING = getType("System.String");	STRING_ARRAY = getType("System.String[]");        MEMBERWISE_CLONE = OBJECT.GetMethod("MemberwiseClone", Type.EmptyTypes);        PICO_META_ATTR = Type.GetType("scala.runtime.MetaAttribute");	SCALA_SYMTAB_ATTR = Type.GetType("scala.runtime.SymtabAttribute");        final Type[] bytearray = new Type[]{ Type.GetType("System.Byte[]") };	SYMTAB_CONSTR = SCALA_SYMTAB_ATTR.GetConstructor(bytearray);        SYMTAB_DEFAULT_CONSTR =            SCALA_SYMTAB_ATTR.GetConstructor(Type.EmptyTypes);        Type delegate = Type.GetType("System.Delegate");        Type[] dargs = new Type[]{delegate, delegate};        DELEGATE_COMBINE = delegate.GetMethod("Combine", dargs);        DELEGATE_REMOVE = delegate.GetMethod("Remove", dargs);        assert PICO_META_ATTR != null;        assert SCALA_SYMTAB_ATTR != null;        assert DELEGATE_COMBINE != null;        assert DELEGATE_REMOVE != null;	Type[] types = Type.EmptyTypes;	Iterator as = assemblies.iterator();	while (as.hasNext()) {	    Type[] atypes = ((Assembly)as.next()).GetTypes();	    int j = 0;	    for (int i = 0; i < atypes.length; i++)		// skip nested types		if (atypes[i].DeclaringType == null)		    atypes[j++] = atypes[i];	    Type[] btypes = new Type[types.length + j];	    System.arraycopy(types, 0, btypes, 0, types.length);	    System.arraycopy(atypes, 0, btypes, types.length, j);	    types = btypes;	}        Comparator typeNameComparator =            new Comparator() {                public int compare(Object o1, Object o2) {                    Type t1 = (Type)o1;                    Type t2 = (Type)o2;                    return t1.FullName.compareTo(t2.FullName);                }            };	Arrays.sort(types, typeNameComparator);	this.types = types;    }