private RepositoryFile internalCreateFolder(
     final Session session,
     final Serializable parentFolderId,
     final RepositoryFile folder,
     final RepositoryFileAcl acl,
     final String versionMessage)
     throws RepositoryException {
   PentahoJcrConstants pentahoJcrConstants = new PentahoJcrConstants(session);
   JcrRepositoryFileUtils.checkoutNearestVersionableFileIfNecessary(
       session, pentahoJcrConstants, parentFolderId);
   Node folderNode =
       JcrRepositoryFileUtils.createFolderNode(
           session, pentahoJcrConstants, parentFolderId, folder);
   // we must create the acl during checkout
   JcrRepositoryFileAclUtils.createAcl(
       session,
       pentahoJcrConstants,
       folderNode.getIdentifier(),
       acl == null ? defaultAclHandler.createDefaultAcl(folder) : acl);
   session.save();
   if (folder.isVersioned()) {
     JcrRepositoryFileUtils.checkinNearestVersionableNodeIfNecessary(
         session, pentahoJcrConstants, folderNode, versionMessage);
   }
   JcrRepositoryFileUtils.checkinNearestVersionableFileIfNecessary(
       session,
       pentahoJcrConstants,
       parentFolderId,
       Messages.getInstance()
           .getString(
               "JcrRepositoryFileDao.USER_0001_VER_COMMENT_ADD_FOLDER",
               folder.getName(),
               (parentFolderId == null
                   ? "root"
                   : parentFolderId.toString()))); // $NON-NLS-1$ //$NON-NLS-2$
   return JcrRepositoryFileUtils.nodeToFile(
       session, pentahoJcrConstants, pathConversionHelper, lockHelper, folderNode);
 }