class ResourceBundleContentHelper {

  protected String getBundlePrefix(final Path path) {
    LOGGER.traceEntry("getBundlePrefix for path: {}", path);

    Require.nonNull(path);
    if (!path.toAbsolutePath().startsWith(this.ignorableBasePath.toAbsolutePath())) {
      throw new IllegalArgumentException("All files should live below the ignorable base path "+this.ignorableBasePath.toAbsolutePath().toString()+". Given path is "+path.toAbsolutePath().toString());
    }

    final Path prefixPath= this.ignorableBasePath.toAbsolutePath().relativize(path.toAbsolutePath().getParent());
    final String bundlePrefix= prefixPath.toString()
      .replaceFirst("^/+", "")         //never start with a slash
      .replaceFirst("$/+", "")         //never end with a slash
      .replaceAll("\\/+", "/")       //reduce multiple slashes to only one
      ;



    return LOGGER.traceExit(bundlePrefix);
  }

  public  ResourceBundleContentHelper();
  public  ResourceBundleContentHelper(final File ignorableBasePath);
  public  ResourceBundleContentHelper(final Path ignorableBasePath);

}