anchor.diff:              else
                   mi.Name
   
  +        let getMemberExpressionInfo (mi:Reflection.MemberInfo) =
  +            let explicitInterfaceName =
  +                if mi.ReflectedType.IsInterface then
  +                    Some(mi.ReflectedType.FSharpName)
  +                else
  +                    None
  +
  +            let expression =
  +                if mi :? MethodInfo then
  +                    sprintf "%s()" mi.Name
  +                else
  +                    mi.Name
  +            
  +            let isPublic =
  +                match mi with
  +                | :? FieldInfo as fi -> fi.IsPublic
  +                | :? MethodInfo as mi -> mi.IsPublic
  +                | :? PropertyInfo as pi -> pi.GetGetMethod(true).IsPublic
  +
  +            { Expression=expression; ExplicitInterfaceName=explicitInterfaceName; IsPublic=isPublic }
  +
           let makeMemberValue (value:obj) valueTy pretext =
               if typeof<System.Collections.IEnumerator>.IsAssignableFrom(valueTy) then
                   { MemberValue.LoadedText=pretext valueTy.FSharpName ""
  
positive.code:             | DataMember { MemberInfo=mi } 
              | CallMember { MemberInfo=mi } -> Some(mi)
              | _ -> None
  
  open System.Text.RegularExpressions
  ///Sprint the given value with the given Type. Precondition: Type cannot be null.
  
negative.code: type Root = { Text: string
                Children:seq<Watch>
                ValueInfo:ValueInfo
                Name: String
                ExpressionInfo:ExpressionInfo }
  
  and Organizer = { OrganizerKind: OrganizerKind
                    Children:seq<Watch> }
  