public Setter(Flag f)
 {
     if (f.isSet)
         throw new ApplicationException("Trying to set flag which already is set!");
     flag = f;
     flag.isSet = true;
 }
 public static IDisposable Set(Flag f)
 {
     return new Setter(f);
 }