Deque<Expr> clone_stk(Set<Expr> phis,Deque<Expr> stk,Edge p){
  if (phis.isEmpty() || stk.isEmpty())   return stk;
  Deque<Expr> copy=new ArrayDeque<Expr>();
  for (  Expr e : stk)   copy.add(phis.contains(e) ? e.args[findPhiArg(e,p)] : e);
  return copy;
}

Deque < Expr > clone_stk ( Set < Expr > phis , Deque < Expr > stk , Edge p ) { if ( phis . isEmpty ( ) || stk . isEmpty ( ) ) return stk ; Deque < Expr > copy = new ArrayDeque < Expr > ( ) ; for ( Expr e : stk ) copy . add ( phis . contains ( e ) ? e . args [ findPhiArg ( e , p ) ] : e ) ; return copy ; }
clone the stack layout for a predecessor edge , replacing phi ' s with the argument coming from that edge .
