public Pattern UnionAndIntersect(Category unionWithCat, Category intersectWithCat) => Patterns.AssertNextIs(this | unionWithCat) + intersectWithCat;
public Pattern Intersect(Category cat) => Patterns.AssertNextIs(this) + cat;