docs: public void exclude(RuleProxyField ruleProxyField, String key,
              RuleContext ruleContext)
      {
          if (key.equals(ruleProxyField.getValue())) // this does not match when it should
          {
              String message = m_messageSourceAccessor.getMessage("nz.co.senanque.rules.invalid.exclude",
                      new Object[]
                      { ruleProxyField.getPropertyMetadata().getLabelName(), key });
              throw new InferenceException(message);
          }
          s_log.debug("Excluding {} for {}", key, ruleProxyField.getProxyField().getFieldName());
          if (!isExcluded(ruleProxyField.getProxyField(),key)) // only do this if not already excluded
          {
              Exclude exclude = new Exclude(ruleProxyField.getProxyField(), key,ruleContext);
              m_excludes.add(exclude);
              s_log.debug("{}excluding: {} {}",new Object[]{m_indenter,ruleProxyField,key});
          }        
      }