Reference baseVersionRef = refFactory.create(version.getKey(), true);
versionableNode.setProperty(versionSession, props.create(JcrLexicon.VERSION_HISTORY, historyRef));
versionableNode.setProperty(versionSession, props.create(JcrLexicon.BASE_VERSION, baseVersionRef));
versionableNode.setProperty(versionSession, props.create(JcrLexicon.IS_CHECKED_OUT, Boolean.FALSE));
// The 'jcr:predecessors' set to an empty array, per Section 15.2 in JSR-283
versionableNode.setProperty(versionSession, props.create(JcrLexicon.PREDECESSORS, new Object[] {}));
// Now process the children of the versionable node, and add them under the frozen node ...
MutableCachedNode frozenNode = frozen.get();
for (ChildReference childRef : cachedNode.getChildReferences(versionSession)) {
AbstractJcrNode child = session.node(childRef.getKey(), null, versionedKey);