anchor.diff:  open Patterns
   
   let private (|PropertyName|) (info: PropertyInfo) = info.Name
  +let private (|Property|) (info: PropertyInfo) = (info.GetValue(null, null), info.Name)
   
   type QuotationPropertiesBuilder private (builder: PropertiesBuilder) =
     new() = QuotationPropertiesBuilder(PropertiesBuilder())
  
positive.code:     let p =
        match expr with
        | ValueWithName(p, _, name) 
        | WithValue(p, _, PropertyGet(_, PropertyName name, _)) ->
          p :?> Prop |@ name
        | WithValue(p, _, _)
        | Value(p, _) -> p :?> Prop
  
negative.code:     let p =
        match expr with
        | ValueWithName(p, _, name)
        | WithValue(p, _, PropertyGet(_, PropertyName name, _))
        | PropertyGet(_, Property(p, name), _) ->
          let p = p :?> Prop<'T>
          new Prop<'T>(p.Sample, p |@ name)
        | WithValue(p, _, _)
  