anchor.diff:          ///Get the "default text" of this Watch
           member this.DefaultText =
               match this with
  -            | Root {Text=text} | DataMember {LoadingText=text}
  -            | CallMember {InitialText=text} | Custom {Text=text} -> text
  +            | Root {Text=text} 
  +            | DataMember {LoadingText=text}
  +            | CallMember {InitialText=text} 
  +            | Custom {Text=text} -> text
           ///Get the children of this Watch. If the children are taken from a Lazy property,
           ///evaluation is forced.
           member this.Children =
               match this with
  -            | Root {Children=children} | Custom {Children=children} -> children
  -            | CallMember {Lazy=l} | DataMember {Lazy=l} -> l.Value.Children
  +            | Root {Children=children} 
  +            | Custom {Children=children} -> children
  +            | CallMember {Lazy=l} 
  +            | DataMember {Lazy=l} -> l.Value.Children
           member this.ValueText =
               match this with
               | Root {ValueText=vt} -> Some(vt)
               | Custom {ValueText=Some(vt)} -> Some(vt)
  -            | DataMember {Lazy=CreatedValue({ValueText=Some(vt)})} | CallMember {Lazy=CreatedValue({ValueText=Some(vt)})} -> Some(vt)
  +            | DataMember {Lazy=CreatedValue({ValueText=Some(vt)})} 
  +            | CallMember {Lazy=CreatedValue({ValueText=Some(vt)})} -> Some(vt)
               | _ -> None
           member this.Image =
               match this with
  -            | Root {Image=image} | DataMember {Image=image}
  -            | CallMember {Image=image} | Custom {Image=image} -> image
  +            | Root {Image=image} 
  +            | DataMember {Image=image}
  +            | CallMember {Image=image} 
  +            | Custom {Image=image} -> image
           member this.MemberInfo =
               match this with
  -            | DataMember { MemberInfo=mi } | CallMember { MemberInfo=mi } -> Some(mi)
  -            | Custom _  | Root _ -> None
  +            | DataMember { MemberInfo=mi } 
  +            | CallMember { MemberInfo=mi } -> Some(mi)
  +            | Custom _  
  +            | Root _ -> None
  +
  +//let requiresUIThread (ty:System.Type) =
  +//    [typeof<System.Windows.Forms.Control>
  +//     typeof<System.Windows.UIElement>] 
  +//    |> Seq.exists ty.IsAssignableFrom
   
   open System.Text.RegularExpressions
   ///Sprint the given value with the given Type. Precondition: Type cannot be null.
  
positive.code:                 let valueText = sprintValue value ty
                  let text = sprintf "[%i] : %s = %s" index ty.FSharpName valueText
                  let children = createChildren value ty
                  Custom({Text=text ; Children=children ; ValueText=Some(valueText) ; Image=ImageResource.Default})
              
              //yield 100  chunks
              let rec calcRest pos (ie:System.Collections.IEnumerator) = seq {
  
negative.code: 
          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
                    Image=ImageResource.Default }
              else
                  let valueText = sprintValue value valueTy
                  { Text=pretext valueTy.FSharpName (" = " + valueText)
                    Children=(createChildren value valueTy)
                    ValueText=Some(valueText)
                    Image=ImageResource.Default }
  
          let loadingText = " = Loading..."
  
  