docs: def free(self, kind, name):
          """
          Mark a node name as no longer in use.
  
          It could thus be recycled to name a new node.
          """
          try:
              params = self._parse(name)
              index = int(params['index'], 10)
              self._free[kind].add(index)
              assert index <= self._top[kind]
              if index == self._top[kind]:
                  self._top[kind] -= 1
          except ValueError:
              # ignore failures in self._parse()
              pass