String (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("/")); }