anchor.diff:  /// see the <a href="https://eiriktsarpalis.wordpress.com/2018/10/30/a-contract-pattern-for-schemaless-datastores">A Contract Pattern for Schemaless DataStores</a> blog article for an overview
   type IUnionContract = interface end
   
  -/// Generic encoding abstraction for serializing/deserializing 
  +/// Generic encoding abstraction for serializing/deserializing
   /// to a fixed format type, e.g. string, byte[], Newtonsoft JsonValue etc
   type IEncoder<'Format> =
       /// 'Null' format value to be used for union cases without a payload
  
positive.code:             field.Accept {
                  new IMemberVisitor<'Union, ('Union -> 'Format) * ('Union -> 'Format -> 'Union)> with
                      member __.Visit(sfield : ShapeMember<'Union, 'Field>) =
                          let enc u = 
                              let f = sfield.Get u 
                              encoder.Encode f
  
                          let dec u f =
  
negative.code: 
      /// <summary>
      ///     Given a primite object encoder instance, generates
      ///     an F# union encoder that constructs and deconstructs
      ///     DU instances into a flat structure. By default, all union cases must
      ///     contain exactly one field.
      /// </summary>
      /// <param name="encoder">Encoder used for converting union case payloads into given 'Format.</param>
      /// <param name="requireRecordFields">Fail encoder generation if union cases contain fields that are not F# records. Defaults to false.</param>
      /// <param name="allowNullaryCases">Fail encoder generation if union contains nullary cases. Defaults to true.</param>
      static member Create<'Union, 'Format when 'Union :> IUnionContract>(encoder : IEncoder<'Format>, ?requireRecordFields : bool, ?allowNullaryCases : bool) : UnionContractEncoder<'Union, 'Format> =
          let config = { requireRecordPayloads = defaultArg requireRecordFields false ; allowNullaryCases = defaultArg allowNullaryCases true }
          EncoderFactory<'Union, 'Format>.Create config encoder