class BRLRuleModel extends RuleModel {

    @Override
    public List<String> getLHSVariables(final boolean includePatterns,
                                        final boolean includeFields) {
        final Set<String> variables = new HashSet<>();
        for (CompositeColumn<? extends BaseColumn> col : dtable.getConditions()) {
            if (col instanceof Pattern52) {
                final Pattern52 p = (Pattern52) col;
                if (p.isBound()) {
                    if (includePatterns) {
                        variables.add(p.getBoundName());
                    }
                }
                for (ConditionCol52 cc : p.getChildColumns()) {
                    if (cc.isBound()) {
                        if (includeFields) {
                            variables.add(cc.getBinding());
                        }
                    }
                }
            } else if (col instanceof BRLConditionColumn) {
                //Delegate to super class's implementation
                final RuleModel rm = new RuleModel();
                final BRLConditionColumn brl = (BRLConditionColumn) col;
                rm.lhs = brl.getDefinition().toArray(new IPattern[brl.getDefinition().size()]);
                variables.addAll(rm.getLHSVariables(includePatterns,
                                                    includeFields));
            }
        }
        variables.addAll(super.getLHSVariables(includePatterns,
                                               includeFields));
        return new ArrayList<>(variables);
    }

    public  BRLRuleModel();
    public  BRLRuleModel(final GuidedDecisionTable52 dtable);

}