@NotNull
  public String getPathStringFrom(String separator, @Nullable CompositePackagingElement<?> ancestor) {
    final List<CompositePackagingElement<?>> parents = getParentsFrom(ancestor);
    // StringUtil.join ignores empty strings whereas this monstrosity doesn't
    return ContainerUtil.reverse(parents).stream().map(RenameablePackagingElement::getName).collect(Collectors.joining("/"));
  }
@NotNull
  public String getPathStringFrom(String separator, @Nullable CompositePackagingElement<?> ancestor)