parameters: (self, path)
docstring: Adds a field path into the tree.
  
      If the field path to add is a sub-path of an existing field path
      in the tree (i.e., a leaf node), it means the tree already matches
      the given path so nothing will be added to the tree. If the path
      matches an existing non-leaf node in the tree, that non-leaf node
      will be turned into a leaf node with all its children removed because
      the path matches all the node's children. Otherwise, a new path will
      be added.
  
      Args:
        path: The field path to add.
docstring_summary: Adds a field path into the tree.
docstring_tokens: Adds a field path into the tree .
function: def AddPath(self, path):
      """Adds a field path into the tree.
  
      If the field path to add is a sub-path of an existing field path
      in the tree (i.e., a leaf node), it means the tree already matches
      the given path so nothing will be added to the tree. If the path
      matches an existing non-leaf node in the tree, that non-leaf node
      will be turned into a leaf node with all its children removed because
      the path matches all the node's children. Otherwise, a new path will
      be added.
  
      Args:
        path: The field path to add.
      """
      node = self._root
      for name in path.split('.'):
        if name not in node:
          node[name] = {}
        elif not node[name]:
          # Pre-existing empty node implies we already have this entire tree.
          return
        node = node[name]
      # Remove any sub-trees we might have had.
      node.clear()
function_tokens: def AddPath ( self , path ) : node = self . _root for name in path . split ( '.' ) : if name not in node : node [ name ] = { } elif not node [ name ] : # Pre-existing empty node implies we already have this entire tree. return node = node [ name ] # Remove any sub-trees we might have had. node . clear ( )