anchor.diff:                                // massively reign in deep printing of properties 
                                 let nDepth = depthLim/10
   #if FX_ATLEAST_PORTABLE
  -                              System.Array.Sort((props),{ new System.Collections.Generic.IComparer<PropertyInfo> with member this.Compare(p1,p2) = compare (p1.Name) (p2.Name) } );
  +                              System.Array.Sort((propsAndFields),{ new System.Collections.Generic.IComparer<MemberInfo> with member this.Compare(p1,p2) = compare (p1.Name) (p2.Name) } );
   #else                              
  -                              System.Array.Sort((props:>System.Array),{ new System.Collections.IComparer with member this.Compare(p1,p2) = compare ((p1 :?> PropertyInfo).Name) ((p2 :?> PropertyInfo).Name) } );
  +                              System.Array.Sort((propsAndFields:>System.Array),{ new System.Collections.IComparer with member this.Compare(p1,p2) = compare ((p1 :?> MemberInfo).Name) ((p2 :?> MemberInfo).Name) } );
   #endif                        
   
  -                              if props.Length = 0 || (nDepth <= 0) then basicL 
  +                              if propsAndFields.Length = 0 || (nDepth <= 0) then basicL 
                                 else basicL --- 
  -                                     (props 
  +                                     (propsAndFields 
                                         |> Array.toList 
  -                                      |> List.map (fun p -> (p.Name,(try Some (objL nDepth Precedence.BracketIfTuple (getProperty obj p.Name)) 
  -                                                                     with _ -> None)))
  +                                      |> List.map 
  +                                        (fun m -> 
  +                                            (m.Name,
  +                                                (try Some (objL nDepth Precedence.BracketIfTuple (getProperty ty obj m.Name)) 
  +                                                 with _ -> try Some (objL nDepth Precedence.BracketIfTuple (getField obj (m :?> FieldInfo))) 
  +                                                           with _ -> None)))
                                         |> makePropertiesL)
                              | _ -> basicL 
                   | UnitValue -> countNodes 1; measureL
  
positive.code:                                         let postText = m.Groups.["post"].Value // Everything after the closing bracket
                                          let prop = replaceEscapedBrackets(m.Groups.["prop"].Value) // Unescape everything between the opening and closing brackets
  
                                          match catchExn (fun () -> getProperty x prop) with
                                            | Choice2Of2 e -> Some (wordL ("<StructuredFormatDisplay exception: " + e.Message + ">"))
                                            | Choice1Of2 alternativeObj ->
                                                try 
  
negative.code:         // pprinter: anyL - support functions
          // -------------------------------------------------------------------- 
  
          let getProperty (ty: Type) (obj: obj) name =
  #if FX_ATLEAST_PORTABLE
              let prop = ty.GetProperty(name, (BindingFlags.Instance ||| BindingFlags.Public ||| BindingFlags.NonPublic))
              if isNotNull prop then prop.GetValue(obj,[||])
  