public IModels Remove(Model value) { value.VerifyNotNull(nameof(value)); if (!Contains(value)) { return(this); } if (!IsSealed) { _hashSet.Remove(value); return(this); } if (Count == 1) { return(Empty); } var result = new HashSetModelSet(); foreach (var element in this) { if (element != value) { result.Add(element); } } return(result); }
public IModels Add(Model value) { value.VerifyNotNull(nameof(value)); if (Contains(value)) { return(this); } if (!IsSealed) { _hashSet.Add(value); return(this); } if (Count == 0) { return(value); } else { var result = new HashSetModelSet(); foreach (var model in this) { result.Add(model); } result.Add(value); return(result); } }