question: public static List < Type > toJimpleDesc ( String desc ) { ArrayList < Type > types = new ArrayList < Type > ( 2 ) ; int len = desc . length ( ) ; int idx = 0 ; all : while ( idx != len ) { int nrDims = 0 ; Type baseType = null ; this_type : while ( idx != len ) { char c = desc . charAt ( idx ++ ) ; switch ( c ) { case '(' : case ')' : continue all ; case '[' : ++ nrDims ; continue this_type ; case 'Z' : baseType = BooleanType . v ( ) ; break this_type ; case 'B' : baseType = ByteType . v ( ) ; break this_type ; case 'C' : baseType = CharType . v ( ) ; break this_type ; case 'S' : baseType = ShortType . v ( ) ; break this_type ; case 'I' : baseType = IntType . v ( ) ; break this_type ; case 'F' : baseType = FloatType . v ( ) ; break this_type ; case 'J' : baseType = LongType . v ( ) ; break this_type ; case 'D' : baseType = DoubleType . v ( ) ; break this_type ; case 'V' : baseType = VoidType . v ( ) ; break this_type ; case 'L' : int begin = idx ; while ( desc . charAt ( ++ idx ) != ';' ) ; String cls = desc . substring ( begin , idx ++ ) ; baseType = RefType . v ( toQualifiedName ( cls ) ) ; break this_type ; default : throw new AssertionError ( "Unknown type: " + c ) ; } } if ( baseType != null && nrDims > 0 ) types . add ( ArrayType . v ( baseType , nrDims ) ) ; else types . add ( baseType ) ; } return types ; }
target:  Converts a method signature to a list of types, with the last entry in the returned list denoting the return type.