presto-spi/src/main/java/io/prestosql/spi/connector/GroupingProperty.java/GroupingProperty/translate
class GroupingProperty:    @Override
    public <T> Optional<LocalProperty<T>> translate(Function<E, Optional<T>> translator)
    {
        Set<Optional<T>> translated = columns.stream()
                .map(translator)
                .collect(toCollection(LinkedHashSet::new));

        if (translated.stream().allMatch(Optional::isPresent)) {
            Set<T> columns = translated.stream()
                    .map(Optional::get)
                    .collect(toCollection(LinkedHashSet::new));

            return Optional.of(new GroupingProperty<>(columns));
        }

        return Optional.empty();
    }