anchor.diff:      let v, ve = mkCompGenLocal arg.Range name argTy
       ve, mkCompGenBind v arg
   
  -let MakeMutableStructuralBindingForTupleElement m (v: Val) i argTy =
  -    let init = mkDefault (m, argTy)
  -    let name = sprintf "%s_%d%s" v.LogicalName i suffixForTupleElementAssignmentTarget
  -    let mutv, mutve = mkMutableCompGenLocal m name argTy
  -    mutv, mutve, mkCompGenBind mutv init
  +let MakeMutableStructuralBindingForTupleElement (v: Val) i (arg: Expr) argTy =
  +    let name = sprintf "%s_%d_%s" v.LogicalName i suffixForTupleElementAssignmentTarget
  +    let v, ve = mkMutableCompGenLocal arg.Range name argTy
  +    ve, mkCompGenBind v arg
   
   let ExpandStructuralBindingRaw cenv expr =
       assert cenv.settings.ExpandStructuralValues()
  
positive.code:     vref.DisplayName.EndsWith suffixForTupleElementAssignmentTarget
  
  let IsMutableForOutArg (vref: ValRef) =
      (vref.IsCompilerGenerated && vref.DisplayName.StartsWith(PrettyNaming.outArgCompilerGeneratedName))
  
  let IsOnlyMutableBeforeUse (vref: ValRef) =
      IsMutableStructuralBindingForTupleElement vref || 
  
negative.code: 
      let requisites = lazy (
          let argTys = destRefTupleTy g v.Type
          let inits = argTys |> List.map (mkNull m)
          let ves, binds = List.mapi2 (MakeMutableStructuralBindingForTupleElement v) inits argTys |> List.unzip
          let vrefs = binds |> List.map (fun (TBind (v, _, _)) -> mkLocalValRef v)
          argTys, ves, binds, vrefs)
  
      match dive g m requisites rhs with
      | Some rewrittenRhs ->
          let argTys, ves, binds, _ = requisites.Value
          let rhsAndTupleBinding = mkCompGenSequential m rewrittenRhs (mkRefTupled g m ves argTys)
          mkLetsBind m binds (mkLet tgtSeqPtOpt m v rhsAndTupleBinding body) |> Some
      | _ -> None
  
  let ExpandStructuralBinding cenv expr =
  