1. @override
void removeNode(String path, { bool recurse: true })

Removes the node specified at path.

Source

@override
void removeNode(String path, {bool recurse: true}) {
  if (path == '/' || !path.startsWith('/')) return;
  SimpleNode node = getNode(path);

  if (node == null) {
    return;
  }

  if (recurse) {
    String base = path;
    if (!base.endsWith("/")) {
      base += "/";
    }

    int baseSlashFreq = countCharacterFrequency(base, "/");

    List<String> targets = nodes.keys.where((String x) {
      return x.startsWith(base) &&
        baseSlashFreq == countCharacterFrequency(x, "/");
    }).toList();

    for (String target in targets) {
      removeNode(target);
    }
  }

  Path p = new Path(path);
  SimpleNode pnode = getNode(p.parentPath);
  node.onRemoving();
  node.removed = true;

  if (pnode != null) {
    pnode.children.remove(p.name);
    pnode.onChildRemoved(p.name, node);
    pnode.updateList(p.name);
  }

  if (node.callbacks.isEmpty && !node._hasListListener) {
    nodes.remove(path);
  } else {
    node._stub = true;
  }
}