code: private ImmutableList<ImmutableSubstitution<VariableOrGroundTerm>> extractDependentUnifiers(
              RelationDefinition databaseRelation, ImmutableMap<FunctionalDependency,
              ImmutableCollection<Collection<ExtensionalDataNode>>> constraintNodeMap,
              ImmutableSet<ExtensionalDataNode> nodesToRemove) throws AtomUnificationException {
  
          ImmutableSet<Integer> nullableIndexes = databaseRelation.getAttributes().stream()
                  .filter(Attribute::canNull)
                  .map(a -> a.getIndex() - 1)
                  .collect(ImmutableCollectors.toSet());
  
          ImmutableList.Builder<ImmutableSubstitution<VariableOrGroundTerm>> dependentUnifierBuilder = ImmutableList.builder();
          for (Map.Entry<FunctionalDependency, ImmutableCollection<Collection<ExtensionalDataNode>>> constraintEntry : constraintNodeMap.entrySet()) {
              dependentUnifierBuilder.addAll(extractDependentUnifiers(constraintEntry.getKey(), constraintEntry.getValue(),
                      nodesToRemove, nullableIndexes));
          }
  
          return dependentUnifierBuilder.build();
      }
docs: TODO: explain
  
  @throws AtomUnificationException