anchor.diff:  
       type Config = { requireRecordPayloads : bool ; allowNullaryCases : bool }
   
  -    type EncoderGenerator<'Union, 'Format when 'Union :> IUnionContract> = 
  +    type EncoderGenerator<'Union, 'Format> = 
           Config -> IEncoder<'Format> -> UnionContractEncoder<'Union, 'Format>
   
       /// Generates an F# union encoder given a generic format encoder instance
  -    let mkUnionEncoder<'Union, 'Format when 'Union :> IUnionContract> () : EncoderGenerator<'Union, 'Format> =
  +    let mkUnionEncoder<'Union, 'Format> () : EncoderGenerator<'Union, 'Format> =
           let shape =
               match shapeof<'Union> with
               | Shape.FSharpUnion (:? ShapeFSharpUnion<'Union> as s) -> s
  
positive.code: 
  /// Provides an encoder implementation for a sum of events
  [<AbstractClass>]
  type UnionContractEncoder<'Union, 'Format when 'Union :> IUnionContract> internal () =
      /// Gets the union case string identifier for given union instance
      abstract GetCaseName : value:'Union -> string
      /// Encodes a union instance into a decoded representation
  
negative.code:                     |  -1 -> None
                      | tag -> caseDecoders.[tag] e.Payload |> Some }
  
      type EncoderFactory<'Union, 'Format> private () =
          static let factory = lazy(mkUnionEncoder<'Union, 'Format>())
          static member Create requireRecordFields (e : IEncoder<_>) = factory.Value requireRecordFields e
  
  