question: public static String toSootICAT ( String type ) { String r = "" ; String [ ] split1 = type . split ( ";" ) ; for ( String s : split1 ) { if ( s . startsWith ( "L" ) ) s = s . replaceFirst ( "L" , "" ) ; if ( s . startsWith ( "<L" ) ) s = s . replaceFirst ( "<L" , "<" ) ; r += s ; } return r ; }
target:  Seems that representation of Annotation type in Soot is not  consistent with the normal type representation. Normal type representation would be a.b.c.ClassName Java bytecode representation is La/b/c/ClassName; Soot Annotation type representation (and Jasmin's) is a/b/c/ClassName. This method transforms the Java bytecode representation into the Soot annotation type representation. Ljava/lang/Class<Ljava/lang/Enum<*>;>; becomes java/lang/Class<java/lang/Enum<*>>