docs: def _parse_tree_dump(text_dump):
      # type: (str) -> Optional[Dict[str, Any]]
      """ Parse text tree dump (one item of a list returned by Booster.get_dump())
      into json format that will be used by next XGBoost release.
      """
      result = None
      stack = []  # type: List[Dict]
      for line in text_dump.split('\n'):
          if line:
              depth, node = _parse_dump_line(line)
              if depth == 0:
                  assert not stack
                  result = node
                  stack.append(node)
              elif depth > len(stack):
                  raise ValueError('Unexpected dump structure')
              else:
                  if depth < len(stack):
                      stack = stack[:depth]
                  stack[-1].setdefault('children', []).append(node)
                  stack.append(node)
      return result