protected void processBinaryExpression( RuleLineCollection ruleLines, RuleLine parentRuleLine, BinaryExpression binaryExpression) { if (OperatorKind.OR.equals(binaryExpression.getOperator())) { OrOperatorRuleLine orOperatorRuleLine = new OrOperatorRuleLine(); processExpressionItem(ruleLines, orOperatorRuleLine.getLeftRuleLineBranch(), binaryExpression.getLeft()); processExpressionItem(ruleLines, orOperatorRuleLine.getRightRuleLineBranch(), binaryExpression.getRight()); addRuleLine(orOperatorRuleLine, ruleLines, parentRuleLine); } else if (OperatorKind.AND.equals(binaryExpression.getOperator())) { processExpressionItem(ruleLines, parentRuleLine, binaryExpression.getLeft()); processExpressionItem(ruleLines, parentRuleLine, binaryExpression.getRight()); } else if (OperatorKind.EQUALITY.equals(binaryExpression.getOperator()) || OperatorKind.INEQUAL.equals(binaryExpression.getOperator()) || OperatorKind.IS_A.equals(binaryExpression.getOperator()) || OperatorKind.IS_NOT_A.equals(binaryExpression.getOperator()) || OperatorKind.GREATER_THAN.equals(binaryExpression.getOperator()) || OperatorKind.GREATER_THAN_OR_EQUAL.equals(binaryExpression.getOperator()) || OperatorKind.LESS_THAN.equals(binaryExpression.getOperator()) || OperatorKind.LESS_THAN_OR_EQUAL.equals(binaryExpression.getOperator())) { processComparisonExpression(ruleLines, parentRuleLine, binaryExpression); } else { throw new InternalErrorException(new Exception("Unknown operator '" + binaryExpression.getOperator() + "'")); } }