VM._assert(i < val.length, "The method descriptor \"" + this + "\"" + " is missing a type after the closing ')'");
VM._assert(i < val.length, "Method descriptor missing type after closing ')'");
  public final VM_TypeReference parseForReturnType(ClassLoader cl) {    if (VM.VerifyAssertions) {      VM._assert(val.length > 0);      VM._assert(val[0] == '(', 		 "Need a valid method descriptor; got \"" + this + "\"");    }    int i = 0;    while (val[i++] != ')') {      if (VM.VerifyAssertions)	VM._assert(i < val.length, 		   "The method descriptor \"" + this + "\"" 		   + " is missing a closing ')'");    }    if (VM.VerifyAssertions)      VM._assert(i < val.length, 		 "The method descriptor \"" + this + "\"" 		 + " is missing a type after the closing ')'");    switch (val[i]) {    case VoidTypeCode:      return VM_TypeReference.Void;    case BooleanTypeCode:      return VM_TypeReference.Boolean;    case ByteTypeCode:      return VM_TypeReference.Byte;    case ShortTypeCode:      return VM_TypeReference.Short;    case IntTypeCode:      return VM_TypeReference.Int;    case LongTypeCode:      return VM_TypeReference.Long;    case FloatTypeCode:      return VM_TypeReference.Float;    case DoubleTypeCode:      return VM_TypeReference.Double;    case CharTypeCode:      return VM_TypeReference.Char;    case ClassTypeCode:   // fall through    case ArrayTypeCode:      return VM_TypeReference.findOrCreate(cl, findOrCreate(val, i, val.length - i));    default:	if (VM.VerifyAssertions) {	  VM._assert(false,		     "Need a valid method descriptor; got \"" + this		     + "\"; can't parse the character '"  		     + byteToString(val[i]) + "'");	}	return null;		// NOTREACHED    }  }