docs: public Map<String, List<PathDetail>> calcDetails(List<String> requestedPathDetails, PathDetailsBuilderFactory pathBuilderFactory, int previousIndex) {
          if (!isFound() || requestedPathDetails.isEmpty())
              return Collections.emptyMap();
          List<PathDetailsBuilder> pathBuilders = pathBuilderFactory.createPathDetailsBuilders(requestedPathDetails, encoder, weighting);
          if (pathBuilders.isEmpty())
              return Collections.emptyMap();
  
          forEveryEdge(new PathDetailsFromEdges(pathBuilders, previousIndex));
  
          Map<String, List<PathDetail>> pathDetails = new HashMap<>(pathBuilders.size());
          for (PathDetailsBuilder builder : pathBuilders) {
              Map.Entry<String, List<PathDetail>> entry = builder.build();
              List<PathDetail> existing = pathDetails.put(entry.getKey(), entry.getValue());
              if (existing != null)
                  throw new IllegalStateException("Some PathDetailsBuilders use duplicate key: " + entry.getKey());
          }
  
          return pathDetails;
      }