question: public SootMethodAndClass parseSootMethodString ( String parseString ) { if ( ! parseString . startsWith ( "<" ) || ! parseString . endsWith ( ">" ) ) { throw new IllegalArgumentException ( "Illegal format of " + parseString + " (should use soot method representation)" ) ; } String name = "" ; String className = "" ; String returnType = "" ; Pattern pattern = Pattern . compile ( "<(.*?):" ) ; Matcher matcher = pattern . matcher ( parseString ) ; if ( matcher . find ( ) ) { className = matcher . group ( 1 ) ; } pattern = Pattern . compile ( ": (.*?) " ) ; matcher = pattern . matcher ( parseString ) ; if ( matcher . find ( ) ) { returnType = matcher . group ( 1 ) ; parseString = parseString . substring ( matcher . end ( 1 ) ) ; } pattern = Pattern . compile ( " (.*?)\\(" ) ; matcher = pattern . matcher ( parseString ) ; if ( matcher . find ( ) ) { name = matcher . group ( 1 ) ; } List < String > paramList = new ArrayList < String > ( ) ; pattern = Pattern . compile ( "\\((.*?)\\)" ) ; matcher = pattern . matcher ( parseString ) ; if ( matcher . find ( ) ) { String params = matcher . group ( 1 ) ; for ( String param : params . split ( "," ) ) paramList . add ( param . trim ( ) ) ; } return new SootMethodAndClass ( name , className , returnType , paramList ) ; }
target:  parses a string in soot representation, for example: <soot.jimple.infoflow.test.TestNoMain: java.lang.String function1()> <soot.jimple.infoflow.test.TestNoMain: void functionCallOnObject()> <soot.jimple.infoflow.test.TestNoMain: java.lang.String function2(java.lang.String,java.lang.String)>