anchor.diff:  #else                           
                                 let props = ty.GetProperties(BindingFlags.GetField ||| BindingFlags.Instance ||| BindingFlags.Public)
   #endif                              
  -                              let props = 
  -                                props |> Array.filter (fun pi ->
  +                              let fields = ty.GetFields(BindingFlags.Instance ||| BindingFlags.Public)
  +                              let propsAndFields = 
  +                                props |> Array.map (fun i -> i :> MemberInfo)
  +                                      |> Array.append (Array.map (fun i -> i :> MemberInfo) fields)
  +                                      |> Array.filter (fun pi ->
                                       // check if property is annotated with System.Diagnostics.DebuggerBrowsable(Never). 
                                       // Its evaluation may have unexpected side effects and\or block printing.
                                       match Seq.toArray (pi.GetCustomAttributes(typeof<System.Diagnostics.DebuggerBrowsableAttribute>, false)) with
  
positive.code:                               // 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) } );
  #else                              
                                System.Array.Sort((props:>System.Array),{ new System.Collections.IComparer with member this.Compare(p1,p2) = compare ((p1 :?> PropertyInfo).Name) ((p2 :?> PropertyInfo).Name) } );
  #endif                        
  
                                if props.Length = 0 || (nDepth <= 0) then basicL 
                                else basicL --- 
                                       (props 
                                        |> Array.toList 
                                        |> List.map (fun p -> (p.Name,(try Some (objL nDepth Precedence.BracketIfTuple (getProperty obj p.Name)) 
                                                                       with _ -> None)))
                                        |> makePropertiesL)
                             | _ -> basicL 
                  | UnitValue -> countNodes 1; measureL
  
negative.code:             ty.InvokeMember(name, (BindingFlags.GetProperty ||| BindingFlags.Instance ||| BindingFlags.Public ||| BindingFlags.NonPublic), null, obj, [| |],CultureInfo.InvariantCulture)
  #endif
  #endif
          let getField obj (fieldInfo: FieldInfo) =
              fieldInfo.GetValue(obj)
  
          let formatChar isChar c = 
              match c with 
              | '\'' when isChar -> "\\\'"
  