private Node createNodeForModelId(ModelId id) throws RepositoryException {
    StringBuilder pathBuilder = new StringBuilder();
    Iterator<String> modelIdIterator = id.iterator();
    Node rootNode = session.getRootNode();
    while (modelIdIterator.hasNext()) {
      String nextPathFragment = modelIdIterator.next();
      pathBuilder.append(nextPathFragment).append("/");
      try {
        rootNode.getNode(pathBuilder.toString());
      } catch (PathNotFoundException pathNotFound) {
        Node addedNode = rootNode.addNode(pathBuilder.toString(), "nt:folder");
        addedNode.setPrimaryType("nt:folder");
      }
    }

    return rootNode.getNode(id.getFullPath().substring(1));
  }