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();