private String findLastStringAssignment(Stmt stmt,Local local,BiDiInterproceduralCFG<Unit,SootMethod> cfg){
  if (stmt instanceof AssignStmt) {
    AssignStmt assign=(AssignStmt)stmt;
    if (assign.getLeftOp() == local) {
      if (assign.getRightOp() instanceof StringConstant)       return ((StringConstant)assign.getRightOp()).value;
    }
  }
  for (  Unit pred : cfg.getPredsOf(stmt)) {
    if (!(pred instanceof Stmt))     continue;
    String lastAssignment=findLastStringAssignment((Stmt)pred,local,cfg);
    if (lastAssignment != null)     return lastAssignment;
  }
  return null;
}

private String findLastStringAssignment ( Stmt stmt , Local local , BiDiInterproceduralCFG < Unit , SootMethod > cfg ) { if ( stmt instanceof AssignStmt ) { AssignStmt assign = ( AssignStmt ) stmt ; if ( assign . getLeftOp ( ) == local ) { if ( assign . getRightOp ( ) instanceof StringConstant ) return ( ( StringConstant ) assign . getRightOp ( ) ) . value ; } } for ( Unit pred : cfg . getPredsOf ( stmt ) ) { if ( ! ( pred instanceof Stmt ) ) continue ; String lastAssignment = findLastStringAssignment ( ( Stmt ) pred , local , cfg ) ; if ( lastAssignment != null ) return lastAssignment ; } return null ; }
finds the last assignment to the given string local by searching upwards from the given statement
