VM._assert(i < val.length, "\"" + this + "\" is a malformed array descriptor");
VM._assert(i < val.length, "malformed array descriptor");
  public final VM_TypeReference[] parseForParameterTypes(ClassLoader cl) {    if (VM.VerifyAssertions)  {      VM._assert(val.length > 0);      VM._assert(val[0] == '(', 		 "The method descriptor \"" + this 		 + "\" doesn't start with the character '('" );    }    VM_TypeReferenceVector sigs = new VM_TypeReferenceVector();    int i = 1;    while (true) {      if (VM.VerifyAssertions)	VM._assert(i < val.length,		   "\"" + this + "\" is not a valid method descriptor");            switch (val[i++])	{      case VoidTypeCode:    sigs.addElement(VM_TypeReference.Void);     	continue;      case BooleanTypeCode: sigs.addElement(VM_TypeReference.Boolean);  	continue;      case ByteTypeCode:    sigs.addElement(VM_TypeReference.Byte);     	continue;      case ShortTypeCode:   sigs.addElement(VM_TypeReference.Short);	continue;      case IntTypeCode:     sigs.addElement(VM_TypeReference.Int);	continue;      case LongTypeCode:    sigs.addElement(VM_TypeReference.Long);     	continue;      case FloatTypeCode:   sigs.addElement(VM_TypeReference.Float);	continue;      case DoubleTypeCode:  sigs.addElement(VM_TypeReference.Double);	continue;      case CharTypeCode:    sigs.addElement(VM_TypeReference.Char);	continue;      case ClassTypeCode: {	int off = i - 1;	while (val[i++] != ';') {	  if (VM.VerifyAssertions)	    VM._assert(i < val.length,		"class descriptor missing a final ';': \"" + this + "\"");	}	sigs.addElement(	    VM_TypeReference	       .findOrCreate(cl, 			     findOrCreate(val, off, i - off)));	continue;      }      case ArrayTypeCode: {	int off = i - 1;	while (val[i] == ArrayTypeCode) {	  if (VM.VerifyAssertions)	    VM._assert(i < val.length, 		       "\"" + this + "\" is a malformed array descriptor");	  ++i;	}	if (val[i++] == ClassTypeCode) while (val[i++] != ';');	sigs.addElement(VM_TypeReference.findOrCreate(cl, findOrCreate(val, off, i - off)));	continue;      }      case (byte)')': // end of parameter list	return sigs.finish();                  default:		if (VM.VerifyAssertions)	  VM._assert(false,		"The class descriptor \"" + this + "\" contains the illegal"		+ " character '" + byteToString(val[i]) + "'");      }    }  }