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;
}

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 ; }
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 < * > >
