anchor.diff:              {
                   yield ("Id", w.Id)
                   yield ("Name", w.Name)
  -                yield ("Remove", w.Remove.ToString())
  -                if w.Start.IsSome then yield ("Start", w.Start.Value.ToString())
  -                yield ("Stop", w.Stop.ToString())
  +                match w.Remove with
  +                | Never -> ()
  +                | _ -> yield ("Remove", w.Remove.ToString())
  +                match w.Start with
  +                | Never -> ()
  +                | _ -> yield ("Start", w.Start.ToString())
  +                match w.Stop with
  +                | Never -> ()
  +                | _ -> yield ("Stop", w.Stop.ToString())
                   yield ("Wait", w.Wait.ToString())
               }
       override w.ToString() = 
  
positive.code:         Id = "ServiceControl"
          Name = "Service"
          Remove = Both
          Start = Some(Both)
          Stop = Both
          Wait = Yes
      }
  
negative.code:     | Install
      | Uninstall
      | Both
      | Never
      override w.ToString() = 
          match w with
          | Install -> "install"
          | Uninstall -> "uninstall"
          | Both -> "both"
          | Never -> null
  
  /// These are used in many methods for generating WiX nodes, regard them as booleans
  type YesOrNo = 
  