private int skipOptionalSize(Symbol sig, int index) {
   byte c = sig.getByteAt(index);
   while (c >= '0' && c <= '9') {
     ++index;
     c = sig.getByteAt(index);
   }
   return index;
 }
 /** Only valid for T_ARRAY; throws unspecified exception otherwise */
 public ArrayInfo getArrayInfo() {
   int index = 1;
   int dim = 1;
   index = skipOptionalSize(signature, index);
   while (signature.getByteAt(index) == '[') {
     index++;
     dim++;
     skipOptionalSize(signature, index);
   }
   int elementType = BasicType.charToType((char) signature.getByteAt(index));
   return new ArrayInfo(dim, elementType);
 }
 public FieldType(Symbol signature) {
   this.signature = signature;
   this.first = (char) signature.getByteAt(0);
   if (Assert.ASSERTS_ENABLED) {
     switch (this.first) {
       case 'B':
       case 'C':
       case 'D':
       case 'F':
       case 'I':
       case 'J':
       case 'S':
       case 'Z':
       case 'L':
       case '[':
         break; // Ok. signature char known
       default:
         Assert.that(
             false,
             "Unknown char in field signature \"" + signature.asString() + "\": " + this.first);
     }
   }
 }