anchor.diff:      let first = Mutable.create ""
       let last = Mutable.create ""
   
  -    let fullNameValidation (value : string) = 
  -        match System.String.IsNullOrWhiteSpace(value) with
  -        | true -> Some "Value must contain at least a first and last name"
  -        | false ->
  -            let words = value.Split([|' '|], System.StringSplitOptions.RemoveEmptyEntries)
  -            if words.Length >= 2 then
  -                None
  -            else
  -                Some "Value must contain at least a first and last name"
  -
       let full = 
           View.map2 (fun f l -> f + " " + l) first last
           |> View.validate (notNullOrWhitespace >> fixErrors >> (custom fullNameValidation))
  
positive.code:     Assert.IsTrue(dynamicVm.IsValid)
      Assert.AreEqual(1, obs.["IsValid"])        
  
  [<Test>]
  let ``BindingTarget\Bind\watch with validator sets error state`` () =
      let first = Mutable.create ""
      let last = Mutable.create ""
  
      let fullNameValidation (value : string) = 
          match System.String.IsNullOrWhiteSpace(value) with
          | true -> Some "Value must contain at least a first and last name"
          | false ->
              let words = value.Split([|' '|], System.StringSplitOptions.RemoveEmptyEntries)
              if words.Length >= 2 then
                  None
              else
                  Some "Value must contain at least a first and last name"
  
      let full = 
          View.map2 (fun f l -> f + " " + l) first last
          |> View.validate (notNullOrWhitespace >> (custom fullNameValidation))
  
negative.code: 
      let obs = PropertyChangedObserver(dynamicVm)    
  
      let errors () =
          let inde = dynamicVm :> INotifyDataErrorInfo
          inde.GetErrors("Full")
          |> Seq.cast<string>
  