protected IComparisonResult And(IComparisonResult?left, IComparisonResult?right) => left?.And(right) ?? ComparisonResult.FailureEmptyOperand("Missing left operand for And");
 protected IComparisonResult Or(IComparisonResult?left, IComparisonResult?right) => left?.Or(right) ?? right ?? ComparisonResult.FailureEmptyOperand("Missing operands for Or");
 protected IComparisonResult IfThen(IComparisonResult ifResult, IComparisonResult thenResult) => ifResult.Result ? thenResult : ComparisonResult.Success();