ISpecificationExpression <Ticket> AddSpecification(ISpecificationExpression <Ticket> toAdd, LogicalOperator logicalOperator) { if (specBeingBuilt == null) { return(toAdd); } logicalOperator.RequireDefinedValue(nameof(logicalOperator)); switch (logicalOperator) { case LogicalOperator.Or: return(specBeingBuilt.Or(toAdd)); case LogicalOperator.And: return(specBeingBuilt.And(toAdd)); default: throw new NotSupportedException($"The {nameof(LogicalOperator)} must have a supported value."); } }