internal Not(ASpec <T> spec) { Inner = spec ?? throw new ArgumentNullException("spec"); }
internal Or(ASpec <T> spec1, ASpec <T> spec2) { Spec1 = spec1 ?? throw new ArgumentNullException("spec1"); Spec2 = spec2 ?? throw new ArgumentNullException("spec2"); }