anchor.diff:              let tyargsR = ConvTypes cenv env m tyargs
               let argsR = ConvExprs cenv env args
               QP.mkSum(mkR,tyargsR,argsR)
  +
           | TOp.Tuple tupInfo,tyargs,_ -> 
               let tyR = ConvType cenv env m (mkAnyTupledTy cenv.g tupInfo tyargs)
               let argsR = ConvExprs cenv env args
               QP.mkTuple(tyR,argsR) // TODO: propagate to quotations
  +
           | TOp.Recd (_,tcref),_,_  -> 
               let rgtypR = ConvTyconRef cenv tcref m
               let tyargsR = ConvTypes cenv env m tyargs
               let argsR = ConvExprs cenv env args
               QP.mkRecdMk(rgtypR,tyargsR,argsR)
  +
           | TOp.UnionCaseFieldGet (ucref,n),tyargs,[e] -> 
               let tyargsR = ConvTypes cenv env m tyargs
               let tcR,s = ConvUnionCaseRef cenv ucref m
  
positive.code: 
          | TOp.Bytes bytes,[],[] -> 
                ConvExpr cenv env (Expr.Op(TOp.Array, [cenv.g.byte_ty], List.ofArray (Array.map (mkByte cenv.g m) bytes), m))
          | TOp.UInt16s arr,[],[] -> 
                ConvExpr cenv env (Expr.Op(TOp.Array, [cenv.g.uint16_ty], List.ofArray (Array.map (mkUInt16 cenv.g m) arr), m))
                
  
negative.code:       substVals: ValMap<Expr> }
  
      static member Empty = 
          { vs = ValMap<_>.Empty 
            nvs = 0
            tyvs = Map.empty 
            isinstVals = ValMap<_>.Empty 
            substVals = ValMap<_>.Empty }
  