anchor.diff:                      let nextResult = createChild pos ie.Current
                       if pos % 100 = 0 && pos <> 0 then
                           let rest = seq { yield nextResult; yield! calcRest (pos+1) ie }
  -                        yield Custom({Text="Rest" ; Children=rest})
  +                        yield Custom({Text="Rest" ; Children=rest ; ValueText=None})
                       else
                           yield nextResult;
                           yield! calcRest (pos+1) ie }
               
               seq { yield! calcRest 0 value } //should use "use" when getting enumerator?
   
  +        //if member is inherited from base type or explicit interface, fully qualify
           let getMemberName (mi:Reflection.MemberInfo) =
               if mi.ReflectedType <> ownerTy then
                   mi.ReflectedType.FSharpName + "." + mi.Name
               else
                   mi.Name
   
  +        let makeMemberLazyCustomInfo (value:obj) valueTy pretext =
  +            if typeof<System.Collections.IEnumerator>.IsAssignableFrom(valueTy) then
  +                { Custom.Text=pretext valueTy.FSharpName ""; Children=(createResultWatches (value :?> System.Collections.IEnumerator)) ; ValueText=None }
  +            else
  +                let valueText = sprintValue value valueTy
  +                { Text=pretext valueTy.FSharpName (" = " + valueText); Children=(createChildren value valueTy) ; ValueText=Some(valueText) }
  +
  +        let loadingText = " = Loading..."
  +
           let getPropertyWatch (pi:PropertyInfo) =
  -            let pretext = sprintf "(P) %s : %s = %s" (getMemberName pi)
  +            let pretext = sprintf "(P) %s : %s%s" (getMemberName pi)
               let delayed = lazy(
                   let value, valueTy =
                       try
  
positive.code:             match this with
              | Root {Children=children} | Custom {Children=children} -> children
              | CallMember {Lazy=l} | DataMember {Lazy=l} -> l.Value.Children
  
  open System.Text.RegularExpressions
  let private sprintValue (value:obj) (ty:Type) =
  
negative.code: open Microsoft.FSharp.Reflection
  open Swensen.Utils
  
  let (|CreatedValue|_|) (l:'a Lazy) =
      if l.IsValueCreated then Some(l.Value)
      else None
  
  //how to add icons to tree view: http://msdn.microsoft.com/en-us/library/aa983725(v=vs.71).aspx
  type Root = { Text: string ; Children:seq<Watch> ; ValueText:string ; Value:obj ; Name: String }
  and Custom = { Text: string ; Children:seq<Watch> ; ValueText: string option}
  and DataMember = { LoadingText: string ; Lazy: Lazy<Custom> }
  and CallMember = { InitialText: string ; LoadingText: string ; Lazy: Lazy<Custom>}
  and Watch =
      | Root of Root
  