docs: public void cleanNameValueTree(BaseMessageFilter filter)
      {
          NameValue[] rgNodes = this.getNameValueArray(filter);
          for (int i = rgNodes.length - 1; i > 0; i--)
          {       // From the last node to the one after the root node.
              NameValue node = rgNodes[i];
              if (!node.isEmpty())
                  return;     // Okay, don't need to check any other nodes up the tree.
              // It is empty, remove it from the parent node and free it.
              NameValue nodeParent = rgNodes[i - 1];
              if (!nodeParent.removeNameValueNode(node))
                  System.out.println("Error: tree node not removed");
              node.free();
          }
      }