public UndefinableNullable(T?value)
 {
     if (value.HasValue)
     {
         this.value = value.GetValueOrDefault();
         this.flags = UndefinableNullableFlags.HasValue;
     }
     this.flags = UndefinableNullableFlags.IsNull;
 }
 public UndefinableNullable(UndefinedT?value)
 {
     if (ReferenceEquals(value, null))
     {
         this.flags = UndefinableNullableFlags.IsNull;
         return;
     }
     this.flags = UndefinableNullableFlags.IsUndefined;
 }
 public UndefinableNullable(T value)
 {
     this.value = value;
     this.flags = UndefinableNullableFlags.HasValue;
 }