anchor.diff:  /// Static helper methods called from the generated code for working with BSON
   type BsonRuntime =
   
  -    // --------------------------------------------------------------------------------------
  +    // -------------------------------------------------------------------------
       // bson option -> type
  +    // -------------------------------------------------------------------------
  +    // Note that need we to specify the conversion functions as eta-expanded,
  +    // i.e. ConvertXX value = value |> Option.bind BsonConversions.AsXX
  +    // (instead of ConvertYY = Option.bind BsonConversions.AsYY), so that their
  +    // usage within quotations generates an Expr.Call, and not an Expr.Application
  +    // since the latter cannot be with AssemblyReplacer.replaceExpr.
   
       static member ConvertString value = value |> Option.bind BsonConversions.AsString
   
  
positive.code:         | BsonType.Null -> [| |]
          | _ -> failwithf "Expecting a list at '%s', got %A" (top.Path()) top
  
      /// Optionally get bson property
      static member TryGetPropertyUnpacked(top:IBsonTop, name) =
          match top.BsonValue.BsonType with
          | BsonType.Document ->
  
negative.code:     /// Returns a single or no value by tag type
      static member TryGetValueByTypeTag<'T>(doc:IBsonTop, tagCode, mapping:Func<IBsonTop,'T>) =
          if BsonRuntime.Matches (InferedTypeTag.ParseCode tagCode) doc.BsonValue
          then Some (mapping.Invoke doc) else None
  
      /// Converts an object to a BsonValue
      static member private ToBsonValue (value:obj) =
          let inline optionToBson f = function
              | None -> BsonNull.Value :> BsonValue
  