public Node getNode(Path path, boolean create) {
            if (path.getNameCount() == 0 || path.toString().isEmpty()) return this;
            String childName = path.getName(0).toString();
            Node child = children.get(childName);
            if (child == null) {
                if (create)
                    child = add(childName);
                else
                    return null;
            }
            // invariant: child exists

            if (path.getNameCount() == 1)
                return child;
            else
                return child.getNode(path.subpath(1, path.getNameCount()), create);
        }
Returns the node given by the path.

@param  create if true, any missing directories are created
@return the node, or null if it does not exist
zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MemoryFileSystem.java