final Symbol JOBJECT = defs.getClass("java.lang.Object");
final Symbol JOBJECT = defs.OBJECT_CLASS;
    public void init() {	if (initialized)	    return;	final Symbol JOBJECT = defs.getClass("java.lang.Object"); //defs.OBJECT_CLASS;	final Symbol JSTRING = defs.STRING_CLASS;	// initialize type mappings	map(defs.ANY_CLASS, OBJECT);	map(defs.ANYREF_CLASS, OBJECT);	map(JOBJECT, OBJECT);	map(JSTRING, STRING);	// constants useful for method mappings 	final scalac.symtab.Type UNBOXED_LONG = 	    new scalac.symtab.Type.UnboxedType(TypeTags.LONG); 	final scalac.symtab.Type UNBOXED_INT = 	    new scalac.symtab.Type.UnboxedType(TypeTags.INT);	final scalac.symtab.Type UNBOXED_CHAR =	    new scalac.symtab.Type.UnboxedType(TypeTags.CHAR);	final scalac.symtab.Type[] jEmpty = scalac.symtab.Type.EMPTY_ARRAY;	final scalac.symtab.Type[] jString1 = new scalac.symtab.Type[]	    {defs.STRING_TYPE()};	final scalac.symtab.Type[] jInt1 = new scalac.symtab.Type[]	    {UNBOXED_INT};	final scalac.symtab.Type[] jInt2 = new scalac.symtab.Type[]	    {UNBOXED_INT, UNBOXED_INT};	final scalac.symtab.Type[] jStringInt = new scalac.symtab.Type[]	    {defs.STRING_TYPE(), UNBOXED_INT};	final scalac.symtab.Type[] jChar2 = new scalac.symtab.Type[]	    {UNBOXED_CHAR, UNBOXED_CHAR};	final Type[] sObject1 = new Type[] {OBJECT};	final Type[] sString1 = new Type[] {STRING};	final Type[] sString2 = new Type[] {STRING, STRING};	final Type[] sChar1   = new Type[] {CHAR};	final Type[] sCharInt2 = new Type[] {CHAR, INT};	final Type ObjectImpl = Type.GetType("com.ms.vjsharp.lang.ObjectImpl");	// map methods of java.lang.Object	translateMethod(JOBJECT, "equals", OBJECT, "Equals");	translateMethod(JOBJECT, "hashCode", OBJECT, "GetHashCode");	translateMethod(JOBJECT, "toString", OBJECT, "ToString");	translateMethod(JOBJECT, "finalize", OBJECT, "Finalize");	translateMethod(JOBJECT, "wait", jEmpty, MONITOR, "Wait", sObject1);	translateMethod(JOBJECT, "wait", new scalac.symtab.			Type[] {UNBOXED_LONG}, // defs.LONG_TYPE			MONITOR, "Wait",			new Type[] {OBJECT, INT});	translateMethod(JOBJECT, "notify", jEmpty, MONITOR, "Pulse", sObject1);	translateMethod(JOBJECT, "notifyAll", jEmpty, MONITOR, "PulseAll", sObject1);	//translateMethod(JOBJECT, "getClass", jEmpty, ObjectImpl, "getClass", sObject1);	// map methods of java.lang.String	//translateMethod(JSTRING, "equals",    STRING, "Equals");	//translateMethod(JSTRING, "toString",  STRING, "ToString");	translateMethod(JSTRING, "compareTo", STRING, "CompareTo");	translateMethod(JSTRING, "length",    STRING, "get_Length");	translateMethod(JSTRING, "charAt",    STRING, "get_Chars");	translateMethod(JSTRING, "concat",  jString1, STRING, "Concat", sString2); 	translateMethod(JSTRING, "indexOf", jInt1, STRING, "IndexOf", sChar1); 	translateMethod(JSTRING, "indexOf", jInt2, STRING, "IndexOf", sCharInt2); 	translateMethod(JSTRING, "indexOf", jString1, STRING, "IndexOf"); 	translateMethod(JSTRING, "indexOf", jStringInt, STRING, "IndexOf"); 	translateMethod(JSTRING, "lastIndexOf", jInt1, STRING, "LastIndexOf", sChar1); 	translateMethod(JSTRING, "lastIndexOf", jInt2, STRING, "LastIndexOf", sCharInt2); 	translateMethod(JSTRING, "lastIndexOf", jString1, STRING, "LastIndexOf"); 	translateMethod(JSTRING, "lastIndexOf", jStringInt, STRING, "LastIndexOf");	translateMethod(JSTRING, "toLowerCase", jEmpty, STRING, "ToLower");	translateMethod(JSTRING, "toUpperCase", jEmpty, STRING, "ToUpper");	translateMethod(JSTRING, "startsWith",  jString1, STRING, "StartsWith");	translateMethod(JSTRING, "endsWith",    jString1, STRING, "EndsWith");	translateMethod(JSTRING, "substring",   jInt1, STRING, "Substring");	translateMethod(JSTRING, "intern",      jEmpty, STRING, "Intern", sString1);	translateMethod(JSTRING, "replace",     jChar2, STRING, "Replace");	translateMethod(JSTRING, "toCharArray", STRING, "ToCharArray");	translateMethod(defs.getModule("java.lang.Byte").moduleClass()			, "parseByte", jString1, BYTE, "Parse");	translateMethod(defs.getModule("java.lang.Short").moduleClass()			, "parseShort", jString1, SHORT, "Parse");	translateMethod(defs.getModule("java.lang.Integer").moduleClass()			, "parseInt", jString1, INT, "Parse");	translateMethod(defs.getModule("java.lang.Long").moduleClass()			, "parseLong", jString1, LONG, "Parse");	translateMethod(defs.getModule("java.lang.Float").moduleClass()			, "parseFloat", jString1, FLOAT, "Parse");	translateMethod(defs.getModule("java.lang.Double").moduleClass()			, "parseDouble", jString1, DOUBLE, "Parse");	SYM_SUBSTRING_INT_INT = lookupMethod(JSTRING, "substring", jInt2);	SUBSTRING_INT_INT =	    STRING.GetMethod("Substring", new Type[]{INT,INT});	SYM_COMPARE_TO_IGNORE_CASE =	    lookupMethod(JSTRING, "compareToIgnoreCase",  jString1);	COMPARE_TO_IGNORE_CASE =	    STRING.GetMethod("Compare", new Type[]{STRING, STRING, BOOLEAN});	initialized = true;	SCALA_SYMTAB_ATTR_CONSTR = ti.SCALA_SYMTAB_ATTR.GetConstructors()[0];        scalac.symtab.Type argument = defs.array_TYPE(defs.STRING_TYPE());        scalac.symtab.Type result = defs.void_TYPE();        Symbol formal = Symbol.NONE.newTerm // !!! should be newVParam            (Position.NOPOS, Modifiers.PARAM, Name.fromString("args"));        formal.setInfo(argument);        MAIN_METHOD_TYPE =	    scalac.symtab.Type.MethodType(new Symbol[] {formal}, result);    } // init()