### Question:
NodeRef implements Bounded, Comparable<NodeRef> { public static NodeRef createRoot(Node node) { Preconditions.checkArgument(NodeRef.ROOT.equals(node.getName()), "A root NodeRef can only be created for a root node"); return new NodeRef(node, null, ObjectId.NULL); } NodeRef(@NonNull Node node, String parentPath, @NonNull ObjectId metadataId); NodeRef update(final ObjectId newId, final @Nullable Envelope newBounds); static NodeRef createRoot(Node node); static NodeRef create(String parentPath, Node node); static NodeRef create(String parentPath, Node node, ObjectId metadataId); String getParentPath(); Node getNode(); String path(); String name(); @Override ObjectId getObjectId(); ObjectId getMetadataId(); ObjectId getDefaultMetadataId(); RevObject.TYPE getType(); @Override boolean equals(Object o); @Override int hashCode(); @Override int compareTo(NodeRef o); @Override String toString(); static @Nullable String parentPath(@Nullable String fullPath); static void checkValidPath(final String path); static @Nullable String nodeFromPath(@Nullable String fullPath); static boolean isDirectChild(@NonNull String parentPath, @NonNull String nodePath); static boolean isChild(@NonNull String parentPath, @NonNull String nodePath); static List<String> allPathsTo(final @NonNull String path); static List<String> split(final @NonNull String path); static String appendChild(String parentTreePath, @NonNull String childName); @Override boolean intersects(Envelope env); @Override void expand(Envelope env); static int depth(String path); static String removeParent(final String parentPath, final String childPath); @Override Optional<Envelope> bounds(); static NodeRef tree(@NonNull String treePath, @NonNull ObjectId id,
            @NonNull ObjectId metadataId); static final String ROOT; static final char PATH_SEPARATOR; }### Answer:
@Test public void testCreateRoot() { Node node = RevObjectFactory.defaultInstance().createNode(NodeRef.ROOT, ObjectId.valueOf("abc123000000000000001234567890abcdef0000"), ObjectId.NULL, TYPE.FEATURE, null, null); NodeRef root = NodeRef.createRoot(node); assertEquals(node, root.getNode()); Node node2 = RevObjectFactory.defaultInstance().createNode("nonRootPath", ObjectId.valueOf("abc123000000000000001234567890abcdef0000"), ObjectId.NULL, TYPE.FEATURE, null, null); assertThrows(IllegalArgumentException.class, () -> NodeRef.createRoot(node2)); }