anchor.diff:              applyParens OP.If (sprintf "if %s then %s" (decompile (OP.If,OP.Non) a) (decompile (OP.If,OP.Non) b))
           | P.IfThenElse(a,b,c) ->
               applyParens OP.If (sprintf "if %s then %s else %s" (decompile (OP.If,OP.Non) a) (decompile (OP.If,OP.Non) b) (decompile (OP.If,OP.Non) c))
  -        //we can't reduce any XXXSet expressions due to limitations of Expr.Eval()
           | P.VarSet(v, arg) ->
               //not sure what precedence should be, using precedence for < op
               applyParens OP.LessThanOp (sprintf "%s <- %s" v.Name (decompile CC.Zero arg)) 
  
positive.code: let decompile expr =
      let rec decompile (contextOP,contextAssoc) expr =
          let applyParens = OP.applyParensForPrecInContext contextOP contextAssoc
  
          match expr with
          | P.Sequential(P.Sequential(lhs, DP.Unit), rhs) ->
  
negative.code:         decompileArgs (OP.Application,OP.Non) " "
      and decompileSequencedArgs =
          decompileArgs (OP.Semicolon,OP.Non) "; "
  
      decompile CC.Zero expr
  
  //-----operator precedence updated April 2011 with bitwise ops-----
  