docs: private void findModifiableConfigElements(Object element, List<ModifiableConfigElement> modifiableConfigElements) throws Exception {
  
          // If the current element implements ModifiableConfigElement add it to the list.
          if (element instanceof ModifiableConfigElement) {
              modifiableConfigElements.add((ModifiableConfigElement) element);
          }
  
          // Iterate over all of the elements.
          for (Field field : element.getClass().getDeclaredFields()) {
              if (!field.isAccessible())
                  field.setAccessible(true);
  
              Object fieldValue = field.get(element);
  
              if (fieldValue != null) {
                  if (fieldValue instanceof ConfigElement) {
                      findModifiableConfigElements(fieldValue, modifiableConfigElements);
                  } else if (fieldValue instanceof ConfigElementList) {
                      for (ConfigElement e : (ConfigElementList<?>) fieldValue)
                          findModifiableConfigElements(e, modifiableConfigElements);
                  }
              }
          }
      }
  
      /**
       * Removes an unknown element, by tag name. One might use this to remove the
       * configuration for a feature which is not part of the product, for example one
       * that is built and installed by a FAT bucket.
       *
       * @param tagName The tag name that should be removed.
       *
       * @return A list of the items that were removed.
       */
      public List<Element> removeUnknownElement(String tagName) {
          List<Element> removedElements = new LinkedList<Element>();
          Iterator<Element> i = unknownElements.iterator();
          while ((i != null) && (i.hasNext())) {
              Element e = i.next();
              if ((e != null) && (e.getTagName().equals(tagName))) {
                  removedElements.add(e);
                  i.remove();
              }
          }
          return removedElements;
      }
  
      /**
       * Adds elements previously removed from the unknown elements list. This was intended
       * to be used to add anything back to the configuration that was removed by the
       * removeUnknownElements() method.
       *
       * @param unknownElements The elements to add back to the configuration.
       */
      public void addUnknownElements(List<Element> unknownElements) {
          for (Element e : unknownElements) {
              this.unknownElements.add(e);
          }
      }
  }