public static String getParamSequence(String descriptor) {
		if (descriptor.charAt(1) == ')') {
			// no parameters!
			return null;
		}
		StringBuilder seq = new StringBuilder();
		int pos = 1;
		char ch;
		while ((ch = descriptor.charAt(pos)) != ')') {
			switch (ch) {
				case 'L':
					seq.append("O"); // O for Object
					pos = descriptor.indexOf(';', pos + 1);
					break;
				case '[':
					seq.append("O"); // O for Object
					while (descriptor.charAt(++pos) == '[') {
					}
					if (descriptor.charAt(pos) == 'L') {
						pos = descriptor.indexOf(';', pos + 1);
					}
					break;
				default:
					seq.append(ch);
			}
			pos++;
		}
		return seq.toString();
	}
public static String getParamSequence ( String descriptor ) { if ( descriptor . charAt ( 1 ) == ')' ) { return null ; } StringBuilder seq = new StringBuilder ( ) ; int pos = 1 ; char ch ; while ( ( ch = descriptor . charAt ( pos ) ) != ')' ) { switch ( ch ) { case 'L' : seq . append ( "O" ) ; pos = descriptor . indexOf ( ';' , pos + 1 ) ; break ; case '[' : seq . append ( "O" ) ; while ( descriptor . charAt ( ++ pos ) == '[' ) { } if ( descriptor . charAt ( pos ) == 'L' ) { pos = descriptor . indexOf ( ';' , pos + 1 ) ; } break ; default : seq . append ( ch ) ; } pos ++ ; } return seq . toString ( ) ; }
Return a simple sequence for the descriptor where type references are collapsed to 'O', so
(IILjava/lang/String;Z) will return IIOZ.

@param descriptor method descriptor, for example (IILjava/lang/String;Z)V
@return sequence where all parameters are represented by a single character - or null if no parameters