anchor.diff:                          value, if value <>& null then value.GetType() else pi.PropertyType //use the actual type if we can
                       with e ->
                           box e, e.GetType()
  -                if typeof<System.Collections.IEnumerator>.IsAssignableFrom(valueTy) then
  -                    { Custom.Text=pretext valueTy.FSharpName ""; Children=(createResultWatches (value :?> System.Collections.IEnumerator)) }
  -                else
  -                    { Text=pretext valueTy.FSharpName (sprintValue value valueTy); Children=(createChildren value valueTy) })
  -            DataMember({LoadingText=(pretext  pi.PropertyType.FSharpName "Loading...") ; Lazy=delayed })
  +                makeMemberLazyCustomInfo value valueTy pretext)
  +            DataMember({LoadingText=(pretext  pi.PropertyType.FSharpName loadingText) ; Lazy=delayed })
   
           let getFieldWatch (fi:FieldInfo) =
  -            let pretext = sprintf "(F) %s : %s = %s" (getMemberName fi)
  +            let pretext = sprintf "(F) %s : %s%s" (getMemberName fi)
               let delayed = lazy(
                   let value, valueTy = 
                       try 
  
positive.code:                         value, if value <>& null then value.GetType() else fi.FieldType //use the actual type if we can
                      with e ->
                          box e, e.GetType()
                  if typeof<System.Collections.IEnumerator>.IsAssignableFrom(valueTy) then
                      { Custom.Text=pretext valueTy.FSharpName ""; Children=(createResultWatches (value :?> System.Collections.IEnumerator)) }
                  else
                      { Text=pretext valueTy.FSharpName (sprintValue value valueTy); Children=(createChildren value valueTy) })
              DataMember({LoadingText=pretext fi.FieldType.FSharpName "Loading..." ; Lazy=delayed })
  
          let getMethodWatch (mi:MethodInfo) =
              let pretext = sprintf "(M) %s() : %s%s" (getMemberName mi)
  
negative.code:         elif ty <> null then ty
          else typeof<obj>
  
      let valueText = sprintValue value ty
      let text = sprintf "%s : %s = %s" name ty.FSharpName valueText
      let children = createChildren value ty
      Root({Text=text ; Children=children ; Value=value ; Name=name ; ValueText=valueText})