public String getStringPropertyValue(RenderingRuleProperty property) {
   int val = values[property.getId()];
   if (val < 0) {
     return null;
   }
   return storage.getStringValue(val);
 }
 public boolean searchRenderingAttribute(String attribute) {
   searchResult = false;
   RenderingRule rule = storage.getRenderingAttributeRule(attribute);
   if (rule == null) {
     return false;
   }
   searchResult = visitRule(rule, true);
   return searchResult;
 }
 private boolean searchInternal(int state, int tagKey, int valueKey, boolean loadOutput) {
   values[storage.PROPS.R_TAG.getId()] = tagKey;
   values[storage.PROPS.R_VALUE.getId()] = valueKey;
   values[storage.PROPS.R_DISABLE.getId()] = 0;
   RenderingRule accept = storage.getRule(state, tagKey, valueKey);
   if (accept == null) {
     return false;
   }
   boolean match = visitRule(accept, loadOutput);
   if (match && values[storage.PROPS.R_DISABLE.getId()] != 0) {
     return false;
   }
   return match;
 }
 public void setStringFilter(RenderingRuleProperty p, String filter) {
   assert p.isInputProperty();
   values[p.getId()] = storage.getDictionaryValue(filter);
 }