def remove!(&block)
      
      # @note #groups and #files is used because it adds the very precious
      #   supergroup to each of the child items.
      
      groups.each {|group| group.remove!(&block) }
      files.each {|file| file.remove!(&block) }
      yield self if block_given?
      
      child_identifier = identifier
      supergroup.instance_eval { remove_child_object(child_identifier) }
      @registry.remove_object identifier
    end
def remove!(&block)
      
      # @note #groups and #files is used because it adds the very precious
      #   supergroup to each of the child items.
      
      groups.each {|group| group.remove!(&block) }
      files.each {|file| file.remove!(&block) }
      yield self if block_given?
      
      child_identifier = identifier
      supergroup.instance_eval { remove_child_object(child_identifier) }
      @registry.remove_object identifier
    end
Remove the resource from the registry.

 @note all children objects of this group are removed as well.