anchor.diff:          let fail x = Choice2Of3 x : EncodeResult
           let generic = Choice3Of3 () : EncodeResult
   
  -        let ident = 
  -            let x = Id.New()
  -            Lambda([], Lambda ([x], Var x))
  -
           /// Returns None if MacroNeedsResolvedTypeArg.
           let getEncoding name isEnc param warn (comp: M.ICompilation) (t: Type) : option<Expression> =
               let ctx = System.Collections.Generic.Dictionary()
               let call = invoke comp param.Provider isEnc
  +            let ident = invokeId comp param.Provider 
               let rec encode t =
                   match t with
                   | ArrayType (t, 1) ->
  
positive.code: 
  [<JavaScript>]
  type Provider() =
  
      abstract EncodeTuple : (unit -> obj -> obj)[] -> (unit -> obj[] -> obj)
      default this.EncodeTuple encs =
  
negative.code:                 match comp.GetCustomTypeInfo t.TypeDefinition with
                  | M.EnumInfo _ -> ok ident
                  | M.FSharpRecordInfo fields ->
                      let fieldEncoders =
                          fields
                          |> List.map (fun f ->
                              if Option.isSome f.DateTimeFormat then
                                  warn (sprintf "Warning: This record field has a custom DateTime format: %s.%s. \
                                      Client-side JSON serialization does not support custom DateTime formatting. \
  