anchor.diff:          yield! publicProperties factory source
           for (key, value) in items do
             let key = sprintf "[%s]" key
  -          let value = value |> Success |> MarshalResult
  +          let value = ValueMarshalResult(value) :> MarshalResult
             yield KeyValuePair(key, value)
         }
       create factory typ string properties
  
positive.code: open System.Reflection
  open Basis.Core
  
  type MarshalResult =
    | MarshalResult
      of Result<MarshalValue, exn>
  with
    member this.Unwrap() =
      let (MarshalResult value) = this
      value
  
    member this.AsObject =
      this.Unwrap() |> Result.toObj
  
    member this.ValueOrThrow =
      this.Unwrap() |> Result.get
  
  and MarshalProperty =
    KeyValuePair<string, MarshalResult>
  
negative.code:   let private publicProperties (factory: Factory) source =
      seq {
        for (propertyInfo, result) in source |> getPublicInstancePropertyValues do
          let result =
            match result with
            | Success value ->
              ValueMarshalResult(factory.Invoke value) :> MarshalResult
            | Failure e ->
              ErrorMarshalResult(e) :> MarshalResult
          yield KeyValuePair<_, _>(propertyInfo.Name, result)
      }
    let private ofCollectionCore factory elementSelector showElement source =
      let typ = source.GetType()
  