public Specification <T> OrNot(Specification <T> other) => Or(other.Not());
public Specification <T> Or(Specification <T> other) => new OrSpecification <T>(this, other);
public Specification <T> AndNot(Specification <T> other) => And(other.Not());
public Specification <T> And(Specification <T> other) => new AndSpecification <T>(this, other);