code: @Override
      protected Optional<PredicateLevelProposal> proposePerPredicate(InnerJoinNode joinNode, ImmutableCollection<ExtensionalDataNode> initialNodes,
                                                                     RelationPredicate predicate, DBMetadata dbMetadata,
                                                                     ImmutableList<Variable> priorityVariables,
                                                                     IntermediateQuery query)
              throws AtomUnificationException {
          ImmutableMultimap<RelationPredicate, ImmutableList<Integer>> uniqueConstraints = dbMetadata.getUniqueConstraints();
  
          if (uniqueConstraints.containsKey(predicate)) {
              ImmutableMultimap<ImmutableList<VariableOrGroundTerm>, ExtensionalDataNode> groupingMap = groupByUniqueConstraintArguments(
                      initialNodes, uniqueConstraints.get(predicate));
              return Optional.of(proposeForGroupingMap(groupingMap));
          }
          else {
              return Optional.empty();
          }
      }
docs: TODO: explain