docs: protected NetworkFile internalCreateFile(
          SrvSession session,
          TreeConnection connection,
          FileOpenParams params,
          String typeName) throws IOException {
  
          String path = params.getPath();
          String cmsPath = getCmsPath(path);
          try {
              CmsObjectWrapper cms = getCms(session, connection);
              if (typeName == null) {
                  typeName = OpenCms.getResourceManager().getDefaultTypeForName(cmsPath).getTypeName();
              }
              CmsResource createdResource = cms.createResource(
                  cmsPath,
                  OpenCms.getResourceManager().getResourceType(typeName).getTypeId());
              tryUnlock(cms, cmsPath);
              CmsJlanNetworkFile result = new CmsJlanNetworkFile(cms, createdResource, path);
              result.setFullName(params.getPath());
              return result;
          } catch (CmsVfsResourceAlreadyExistsException e) {
              throw new FileExistsException("File exists: " + path);
          } catch (CmsException e) {
              throw new IOException(e);
          }
  
      }