code: private Path relativePath(final Path path) {
  		List<Path> pathList = new ArrayList<>();
  		for (Path part : path) {
  			pathList.add(part);
  		}
  
  		int loadPathSize = this.loadPathParts.length;
  
  		// loadPathのフォルダの並びと一致する場所を特定し、その下を相対パスとして返却する
  		for (int i = 0; i < pathList.size() - loadPathSize; i++) {
  			String[] paths = pathList.subList(i, i + loadPathSize).stream().map(Path::toString)
  					.collect(Collectors.toList()).toArray(new String[loadPathSize]);
  			if (Arrays.equals(this.loadPathParts, paths)) {
  				return path.subpath(i + loadPathSize, path.getNameCount());
  			}
  		}
  		// loadPathと一致しなかった場合は元のpathを返却する
  		return path;
  	}
docs: loadPathからの相対パスを取得する.
  loadPathと一致する部分がなかった場合は、引数のpathの値をそのまま返却する
  
  @param path 相対パスを取得する元のパス
  @return 相対パス