Index: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/AbstractTree.java
===================================================================
--- oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/AbstractTree.java	(revision 1649805)
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/impl/AbstractTree.java	(revision )
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.jackrabbit.oak.plugins.tree;
+package org.apache.jackrabbit.oak.plugins.tree.impl;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Predicates.notNull;
@@ -29,7 +29,7 @@
 import static org.apache.jackrabbit.oak.api.Tree.Status.NEW;
 import static org.apache.jackrabbit.oak.api.Tree.Status.UNCHANGED;
 import static org.apache.jackrabbit.oak.api.Type.NAMES;
-import static org.apache.jackrabbit.oak.plugins.tree.TreeConstants.OAK_CHILD_ORDER;
+import static org.apache.jackrabbit.oak.plugins.tree.impl.TreeConstants.OAK_CHILD_ORDER;
 import static org.apache.jackrabbit.oak.spi.state.NodeStateUtils.isHidden;
 
 import java.util.List;
Index: oak-core/pom.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- oak-core/pom.xml	(revision 1649805)
+++ oak-core/pom.xml	(revision )
@@ -80,6 +80,7 @@
               org.apache.jackrabbit.oak.plugins.segment,
               org.apache.jackrabbit.oak.plugins.segment.http,
               org.apache.jackrabbit.oak.plugins.segment.file,
+              org.apache.jackrabbit.oak.plugins.tree,
               org.apache.jackrabbit.oak.plugins.value,
               org.apache.jackrabbit.oak.plugins.version,
               org.apache.jackrabbit.oak.spi.commit,
Index: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/RootFactory.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/RootFactory.java	(revision )
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/RootFactory.java	(revision )
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.plugins.tree;
+
+import javax.annotation.Nonnull;
+
+import org.apache.jackrabbit.oak.api.Root;
+import org.apache.jackrabbit.oak.core.ImmutableRoot;
+import org.apache.jackrabbit.oak.spi.state.NodeState;
+
+/**
+ * Factory to obtain immutable {@code Tree} objects from {@code NodeState}s.
+ */
+public final class RootFactory {
+
+    private RootFactory() {}
+
+    public static Root createReadOnlyRoot(@Nonnull NodeState rootState) {
+        return new ImmutableRoot(rootState);
+    }
+
+    public static Root createReadOnlyRoot(@Nonnull Root root) {
+        return ImmutableRoot.getInstance(root);
+    }
+}
\ No newline at end of file
Index: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/ImmutableTree.java
===================================================================
--- oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/ImmutableTree.java	(revision 1649805)
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/impl/ImmutableTree.java	(revision )
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.oak.plugins.tree;
+package org.apache.jackrabbit.oak.plugins.tree.impl;
 
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
Index: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/TreeConstants.java
===================================================================
--- oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/TreeConstants.java	(revision 1649805)
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/impl/TreeConstants.java	(revision )
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.oak.plugins.tree;
+package org.apache.jackrabbit.oak.plugins.tree.impl;
 
 public interface TreeConstants {
 
\ No newline at end of file
Index: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/TreeFactory.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/TreeFactory.java	(revision )
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/TreeFactory.java	(revision )
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.plugins.tree;
+
+import javax.annotation.Nonnull;
+
+import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree;
+import org.apache.jackrabbit.oak.spi.state.NodeState;
+
+/**
+ * Factory to obtain immutable {@code Tree} objects from {@code NodeState}s.
+ */
+public final class TreeFactory {
+
+    private TreeFactory() {}
+
+    public static Tree createReadOnlyTree(@Nonnull NodeState rootState) {
+        return new ImmutableTree(rootState);
+    }
+}
\ No newline at end of file
Index: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/ChildOrderDiff.java
===================================================================
--- oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/ChildOrderDiff.java	(revision 1649805)
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/impl/ChildOrderDiff.java	(revision )
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.oak.plugins.tree;
+package org.apache.jackrabbit.oak.plugins.tree.impl;
 
 import java.util.Iterator;
 import java.util.Set;
@@ -27,7 +27,7 @@
 
 /**
  * Helper class to handle modifications to the hidden
- * {@link org.apache.jackrabbit.oak.plugins.tree.TreeConstants#OAK_CHILD_ORDER} property.
+ * {@link org.apache.jackrabbit.oak.plugins.tree.impl.TreeConstants#OAK_CHILD_ORDER} property.
  */
 public final class ChildOrderDiff {
 
@@ -35,7 +35,7 @@
 
     /**
      * Tests if there was any user-supplied reordering involved with the
-     * modification of the {@link org.apache.jackrabbit.oak.plugins.tree.TreeConstants#OAK_CHILD_ORDER}
+     * modification of the {@link org.apache.jackrabbit.oak.plugins.tree.impl.TreeConstants#OAK_CHILD_ORDER}
      * property.
      *
      * @param before
Index: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/package-info.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/package-info.java	(revision )
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/package-info.java	(revision )
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+@Version("1.0")
+@Export(optional = "provide:=true")
+package org.apache.jackrabbit.oak.plugins.tree;
+
+import aQute.bnd.annotation.Version;
+import aQute.bnd.annotation.Export;
\ No newline at end of file
