/** Whether the component is singleton */
 @Override
 public boolean isSingleton() {
   if (declaration.isDefinedSingleton() || getGroup() == null) {
     return declaration.isSingleton();
   }
   return getGroup().isSingleton();
 }
 @Override
 public Map<String, String> getValidAttributes() {
   Map<String, String> ret = new HashMap<String, String>();
   for (PropertyDefinition def : declaration.getPropertyDefinitions()) {
     ret.put(def.getName(), def.getType());
   }
   if (getGroup() != null) {
     ret.putAll(getGroup().getValidAttributes());
   }
   return ret;
 }
 @Override
 public final String getName() {
   return declaration.getName();
 }
 public boolean isInternalInstantiable() {
   if (declaration.isDefinedInstantiable() || getGroup() == null) {
     return (declaration.isInstantiable());
   }
   return ((ComponentImpl) getGroup()).isInternalInstantiable();
 }