jodd-proxetta/src/main/java/jodd/asm7/Type.java
public static Type[] getArgumentTypes(final String methodDescriptor) {
    // First step: compute the number of argument types in methodDescriptor.
    int numArgumentTypes = 0;
    // Skip the first character, which is always a '('.
    int currentOffset = 1;
    // Parse the argument types, one at a each loop iteration.
    while (methodDescriptor.charAt(currentOffset) != ')') {
      while (methodDescriptor.charAt(currentOffset) == '[') {
        currentOffset++;
      }
      if (methodDescriptor.charAt(currentOffset++) == 'L') {
        // Skip the argument descriptor content.
        currentOffset = methodDescriptor.indexOf(';', currentOffset) + 1;
      }
      ++numArgumentTypes;
    }

    // Second step: create a Type instance for each argument type.
    Type[] argumentTypes = new Type[numArgumentTypes];
    // Skip the first character, which is always a '('.
    currentOffset = 1;
    // Parse and create the argument types, one at each loop iteration.
    int currentArgumentTypeIndex = 0;
    while (methodDescriptor.charAt(currentOffset) != ')') {
      final int currentArgumentTypeOffset = currentOffset;
      while (methodDescriptor.charAt(currentOffset) == '[') {
        currentOffset++;
      }
      if (methodDescriptor.charAt(currentOffset++) == 'L') {
        // Skip the argument descriptor content.
        currentOffset = methodDescriptor.indexOf(';', currentOffset) + 1;
      }
      argumentTypes[currentArgumentTypeIndex++] =
          getTypeInternal(methodDescriptor, currentArgumentTypeOffset, currentOffset);
    }
    return argumentTypes;
  }
public static Type[] getArgumentTypes(final String methodDescriptor) {
    // First step: compute the number of argument types in methodDescriptor.
    int numArgumentTypes = 0;
    // Skip the first character, which is always a '('.
    int currentOffset = 1;
    // Parse the argument types, one at a each loop iteration.
    while (methodDescriptor.charAt(currentOffset) != ')') {
      while (methodDescriptor.charAt(currentOffset) == '[') {
        currentOffset++;
      }
      if (methodDescriptor.charAt(currentOffset++) == 'L') {
        // Skip the argument descriptor content.
        currentOffset = methodDescriptor.indexOf(';', currentOffset) + 1;
      }
      ++numArgumentTypes;
    }

    // Second step: create a Type instance for each argument type.
    Type[] argumentTypes = new Type[numArgumentTypes];
    // Skip the first character, which is always a '('.
    currentOffset = 1;
    // Parse and create the argument types, one at each loop iteration.
    int currentArgumentTypeIndex = 0;
    while (methodDescriptor.charAt(currentOffset) != ')') {
      final int currentArgumentTypeOffset = currentOffset;
      while (methodDescriptor.charAt(currentOffset) == '[') {
        currentOffset++;
      }
      if (methodDescriptor.charAt(currentOffset++) == 'L') {
        // Skip the argument descriptor content.
        currentOffset = methodDescriptor.indexOf(';', currentOffset) + 1;
      }
      argumentTypes[currentArgumentTypeIndex++] =
          getTypeInternal(methodDescriptor, currentArgumentTypeOffset, currentOffset);
    }
    return argumentTypes;
  }
public static Type [ ] getArgumentTypes ( final String methodDescriptor ) { // First step: compute the number of argument types in methodDescriptor. int numArgumentTypes = 0 ; // Skip the first character, which is always a '('. int currentOffset = 1 ; // Parse the argument types, one at a each loop iteration. while ( methodDescriptor . charAt ( currentOffset ) != ' ' ) { while ( methodDescriptor . charAt ( currentOffset ) == ' ' ) { currentOffset ++ ; } if ( methodDescriptor . charAt ( currentOffset ++ ) == ' ' ) { // Skip the argument descriptor content. currentOffset = methodDescriptor . indexOf ( ' ' , currentOffset ) + 1 ; } ++ numArgumentTypes ; } // Second step: create a Type instance for each argument type. Type [ ] argumentTypes = new Type [ numArgumentTypes ] ; // Skip the first character, which is always a '('. currentOffset = 1 ; // Parse and create the argument types, one at each loop iteration. int currentArgumentTypeIndex = 0 ; while ( methodDescriptor . charAt ( currentOffset ) != ' ' ) { final int currentArgumentTypeOffset = currentOffset ; while ( methodDescriptor . charAt ( currentOffset ) == ' ' ) { currentOffset ++ ; } if ( methodDescriptor . charAt ( currentOffset ++ ) == ' ' ) { // Skip the argument descriptor content. currentOffset = methodDescriptor . indexOf ( ' ' , currentOffset ) + 1 ; } argumentTypes [ currentArgumentTypeIndex ++ ] = getTypeInternal ( methodDescriptor , currentArgumentTypeOffset , currentOffset ) ; } return argumentTypes ; }
Returns the {@link Type} values corresponding to the argument types of the given method
descriptor.

@param methodDescriptor a method descriptor.
@return the {@link Type} values corresponding to the argument types of the given method
descriptor.
Returns the { @link Type } values corresponding to the argument types of the given method descriptor .