ANYREF_TYPE = ANYREF_CLASS.typeConstructor();
ANYREF_TYPE = ANYREF_CLASS.typeConstructor().unalias();
    public Definitions(Global global) {        // a hack to make definitions accessible earlier to other        // components        global.definitions = this;        PackageParser pparser = new PackageParser(global);        // this is the root value; all top-level functions,        // modules etc. are a member of this value        ROOT = TermSymbol.newJavaPackageModule(            Names.EMPTY, Symbol.NONE, pparser);        ROOT_CLASS = ROOT.moduleClass();        // this is a prefix for all types inside of the anonymous package        ROOT_TYPE = ROOT_CLASS.thisType();        // the scala module        SCALA = getModule(Names.scala);        // the scala class        SCALA_CLASS = SCALA.moduleClass();        // the scala package as a prefix        SCALA_TYPE = Type.singleType(ROOT_TYPE, SCALA);        // the java module        JAVA = getModule(Names.java);        // the java class        JAVA_CLASS = JAVA.moduleClass();        // the java package as a prefix        JAVA_TYPE = Type.singleType(ROOT_TYPE, JAVA);        // the java.lang module        JAVALANG = getModule(Names.java_lang);        // the java.lang class        JAVALANG_CLASS = JAVALANG.moduleClass();        // the java.lang package as a prefix        JAVALANG_TYPE = Type.singleType(JAVA_TYPE, JAVALANG);        // the scala.runtime module        SCALARUNTIME = getModule(Names.scala_runtime);        // the scala.runtime class        SCALARUNTIME_CLASS = SCALARUNTIME.moduleClass();        // the scala.runtime package as a prefix        SCALARUNTIME_TYPE = Type.singleType(SCALA_TYPE, SCALARUNTIME);        // the scala.ANY classs        ANY_CLASS = new ClassSymbol(	    Position.NOPOS, Names.Any.toTypeName(), SCALA_CLASS, Modifiers.JAVA);        SCALA_CLASS.members().enter(ANY_CLASS);        ANY_TYPE = ANY_CLASS.typeConstructor();        ANY_CLASS.setInfo(Type.compoundType(Type.EMPTY_ARRAY, new Scope(), ANY_CLASS));        ANY_CLASS.constructor().setInfo(	    Type.MethodType(Symbol.EMPTY_ARRAY, ANY_TYPE));        // the java.lang.OBJECT class        JAVA_OBJECT_CLASS = getClass(Names.java_lang_Object);        JAVA_OBJECT_TYPE = JAVA_OBJECT_CLASS.typeConstructor();        JAVA_OBJECT_CLASS.setInfo(pparser.classCompletion);	// the scala.PartialFunction class	PARTIALFUNCTION_CLASS = getClass(Names.scala_PartialFunction);        // the scala.ANYREF class	ANYREF_CLASS = new TypeSymbol(	    Kinds.ALIAS, Position.NOPOS, Names.AnyRef.toTypeName(), 	    SCALA_CLASS, Modifiers.JAVA)	    .setInfo(JAVA_OBJECT_TYPE);		ANYREF_TYPE = ANYREF_CLASS.typeConstructor();        SCALA.members().enter(ANYREF_CLASS);        // the scala.OBJECT class	OBJECT_CLASS = getClass(Names.scala_Object);        OBJECT_TYPE = OBJECT_CLASS.typeConstructor();        // the scala.ANYVAL class	ANYVAL_CLASS = getClass(Names.scala_AnyVal);        ANYVAL_TYPE = ANYVAL_CLASS.typeConstructor();        // the scala.ALL class        ALL_CLASS = new ClassSymbol(	    Position.NOPOS, Names.All.toTypeName(), SCALA_CLASS, 0);        SCALA_CLASS.members().enter(ALL_CLASS);        ALL_TYPE = ALL_CLASS.typeConstructor();        ALL_CLASS.setInfo(Type.compoundType(new Type[]{ANY_TYPE}, new Scope(), ALL_CLASS));        ALL_CLASS.constructor().setInfo(Type.MethodType(Symbol.EMPTY_ARRAY, ALL_TYPE));        // the scala.ALLREF class        ALLREF_CLASS = new ClassSymbol(	    Position.NOPOS, Names.AllRef.toTypeName(), SCALA_CLASS, 0);        SCALA_CLASS.members().enter(ALLREF_CLASS);        ALLREF_TYPE = ALLREF_CLASS.typeConstructor();        ALLREF_CLASS.setInfo(Type.compoundType(new Type[]{ANYREF_TYPE}, new Scope(), ALLREF_CLASS));        ALLREF_CLASS.constructor().setInfo(Type.MethodType(Symbol.EMPTY_ARRAY, ALLREF_TYPE));        // the primitive types        DOUBLE_CLASS = getClass(Names.scala_Double);        DOUBLE_TYPE = DOUBLE_CLASS.typeConstructor();        FLOAT_CLASS = getClass(Names.scala_Float);        FLOAT_TYPE = FLOAT_CLASS.typeConstructor();        LONG_CLASS = getClass(Names.scala_Long);        LONG_TYPE = LONG_CLASS.typeConstructor();        INT_CLASS = getClass(Names.scala_Int);        INT_TYPE = INT_CLASS.typeConstructor();        CHAR_CLASS = getClass(Names.scala_Char);        CHAR_TYPE = CHAR_CLASS.typeConstructor();        SHORT_CLASS = getClass(Names.scala_Short);        SHORT_TYPE = SHORT_CLASS.typeConstructor();        BYTE_CLASS = getClass(Names.scala_Byte);        BYTE_TYPE = BYTE_CLASS.typeConstructor();        BOOLEAN_CLASS = getClass(Names.scala_Boolean);        BOOLEAN_TYPE = BOOLEAN_CLASS.typeConstructor();        UNIT_CLASS = getClass(Names.scala_Unit);        UNIT_TYPE = UNIT_CLASS.typeConstructor();        // the array class        ARRAY_CLASS = getClass(Names.scala_Array);        // add members to java.lang.Throwable        JAVA_THROWABLE_CLASS = getClass(Names.java_lang_Throwable);         JAVA_THROWABLE_TYPE = JAVA_THROWABLE_CLASS.typeConstructor();        THROW = new TermSymbol(	    Position.NOPOS, Names.throw_, JAVA_THROWABLE_CLASS, Modifiers.FINAL);        THROW.setInfo(Type.PolyType(Symbol.EMPTY_ARRAY, ALL_TYPE));        JAVA_THROWABLE_CLASS.members().enter(THROW);        // add the java.lang.String class to the scala package        JAVA_STRING_CLASS = getClass(Names.java_lang_String);        JAVA_STRING_TYPE = JAVA_STRING_CLASS.typeConstructor();        STRING_CLASS = new TypeSymbol(	    Kinds.ALIAS, Position.NOPOS, Names.String.toTypeName(), SCALA_CLASS, 0)	    .setInfo(JAVA_STRING_TYPE);	STRING_TYPE = STRING_CLASS.typeConstructor();        SCALA.members().enter(STRING_CLASS);	SEQ_CLASS = getClass(Names.scala_Seq);	/*        ANY_PLUS_STRING = new TermSymbol(	    Position.NOPOS, Names.PLUS, ANY_CLASS, Modifiers.FINAL);        ANY_PLUS_STRING.setInfo(	    Type.MethodType(		new Symbol[]{newParameter(ANY_PLUS_STRING, STRING_TYPE)}, 		STRING_TYPE));        ANY_CLASS.members().enter(ANY_PLUS_STRING);	*/        STRING_PLUS_ANY = new TermSymbol(	    Position.NOPOS, Names.PLUS, STRING_CLASS, Modifiers.FINAL);        STRING_PLUS_ANY.setInfo(	    Type.MethodType(		new Symbol[]{newParameter(STRING_PLUS_ANY, ANY_TYPE)},		STRING_TYPE));        STRING_CLASS.members().enter(STRING_PLUS_ANY);        // add members to class scala.Any        MATCH = new TermSymbol(	    Position.NOPOS, Names.match, ANY_CLASS, Modifiers.FINAL);        MATCH.setInfo(	    Type.MethodType(		new Symbol[]{newParameter(MATCH, OBJECT_TYPE)},		OBJECT_TYPE));        ANY_CLASS.members().enter(MATCH);        AS = new TermSymbol(	    Position.NOPOS, Names.as, ANY_CLASS, Modifiers.FINAL);        Symbol tvar = newTypeParameter(AS, ANY_TYPE);        AS.setInfo(Type.PolyType(new Symbol[]{tvar}, tvar.type()));        ANY_CLASS.members().enter(AS);        IS = new TermSymbol(	    Position.NOPOS, Names.is, ANY_CLASS, Modifiers.FINAL);        IS.setInfo(Type.PolyType(new Symbol[]{newTypeParameter(IS, ANY_TYPE)},				 BOOLEAN_TYPE));        ANY_CLASS.members().enter(IS);        EQEQ = new TermSymbol(	    Position.NOPOS, Names.EQEQ, ANY_CLASS, Modifiers.FINAL);        EQEQ.setInfo(Type.MethodType(new Symbol[]{newParameter(EQEQ, ANY_TYPE)},				     BOOLEAN_TYPE));        ANY_CLASS.members().enter(EQEQ);        BANGEQ = new TermSymbol(	    Position.NOPOS, Names.BANGEQ, ANY_CLASS, Modifiers.FINAL);        BANGEQ.setInfo(Type.MethodType(new Symbol[]{newParameter(BANGEQ, ANY_TYPE)},				       BOOLEAN_TYPE));        ANY_CLASS.members().enter(BANGEQ);        EQUALS = new TermSymbol(	    Position.NOPOS, Names.equals, ANY_CLASS, 0);        EQUALS.setInfo(Type.MethodType(new Symbol[]{newParameter(EQUALS, JAVA_OBJECT_TYPE)},				     BOOLEAN_TYPE));        ANY_CLASS.members().enter(EQUALS);        TOSTRING = new TermSymbol(	    Position.NOPOS, Names.toString, ANY_CLASS, 0);        TOSTRING.setInfo(Type.MethodType(Symbol.EMPTY_ARRAY, STRING_TYPE));        ANY_CLASS.members().enter(TOSTRING);        HASHCODE = new TermSymbol(	    Position.NOPOS, Names.hashCode, ANY_CLASS, 0);        HASHCODE.setInfo(Type.MethodType(Symbol.EMPTY_ARRAY, INT_TYPE));        ANY_CLASS.members().enter(HASHCODE);        // add a null value to the root scope	NULL = new TermSymbol(	    Position.NOPOS, Names.null_, ROOT_CLASS, 0);        NULL.setInfo(ALLREF_TYPE);        ROOT.members().enter(NULL);    }