code: public Object remove(Object key)
      {
          checkKey(key);
          int keyLength = ((String)key).length();
          if (keyLength >= MIN_LENGHT_CHECK)
          {
              if (MARK_CREATED.length() == keyLength &&
                  MARK_CREATED.equals(key))
              {
                  Object oldValue = _component.getOamVfMarkCreated();
                  _component.setOamVfMarkCreated(null);
                  return oldValue;
              }
              else if (FACET_NAME_KEY.length() == keyLength &&
                  FACET_NAME_KEY.equals(key))
              {
                  Object oldValue = _component.getOamVfFacetName();
                  _component.setOamVfFacetName(null);
                  return oldValue;
              }
              else if (COMPONENT_ADDED_BY_HANDLER_MARKER.length() == keyLength &&
                  COMPONENT_ADDED_BY_HANDLER_MARKER.equals(key))
              {
                  Object oldValue = _component.isOamVfAddedByHandler();
                  _component.setOamVfAddedByHandler(false);
                  return oldValue;
              }
              else if (FACET_CREATED_UIPANEL_MARKER.length() == keyLength &&
                  FACET_CREATED_UIPANEL_MARKER.equals(key))
              {
                  Object oldValue = _component.isOamVfFacetCreatedUIPanel();
                  _component.setOamVfFacetCreatedUIPanel(false);
                  return oldValue;
              }
              else if (UIComponent.BEANINFO_KEY.length() == keyLength 
                  && UIComponent.BEANINFO_KEY.equals(key))
              {
                  _ccBeanInfo = null;
              }
          }
          _PropertyDescriptorHolder propertyDescriptor = getPropertyDescriptor((String) key);
          if (propertyDescriptor != null)
          {
              throw new IllegalArgumentException("Cannot remove component property attribute");
          }
          return _component.getStateHelper().remove(
                  UIComponentBase.PropertyKeys.attributesMap, key);
      }
docs: Remove the attribute with the specified name. An attempt to
  remove an entry whose name is that of a <i>property</i> on
  the underlying UIComponent will cause an IllegalArgumentException.
  Value-bindings for the underlying component are ignored.
  
  @param key must be a String. Any other type will cause ClassCastException.