@Override
 public <T> T getProperty(CssType<T> type, CssPropertyKey property) {
   if (rule == null) {
     return null;
   } else {
     return rule.getProperty(type, property);
   }
 }
 @Override
 public void removeRuleContentListener(CssRuleContentListener listener) {
   listeners.remove(listener);
   if (listeners.isEmpty()) {
     if (rule != null) {
       rule.removeRuleContentListener(forwardListener);
     }
   }
 }
 @Override
 public void addRuleContentListener(CssRuleContentListener listener) {
   if (listener == null) {
     throw new IllegalArgumentException("listener must not be null");
   }
   if (listeners.isEmpty()) {
     if (rule != null) {
       rule.addRuleContentListener(forwardListener);
     }
   }
   listeners.add(listener);
 }