private void addAdditionalAttributes(
     CellGroup cellGroup, TupleOID originalOIDForConclusionValue, Tuple tuple, Dependency egd) {
   for (AttributeRef additionalAttribute : egd.getAdditionalAttributes()) {
     for (Cell additionalCell : tuple.getCells()) {
       AttributeRef unaliasedAttribute = ChaseUtility.unAlias(additionalCell.getAttributeRef());
       if (!unaliasedAttribute.equals(additionalAttribute)) {
         continue;
       }
       TupleOID originalOIDForCell =
           new TupleOID(ChaseUtility.getOriginalOid(tuple, additionalCell.getAttributeRef()));
       if (!originalOIDForCell.equals(originalOIDForConclusionValue)) {
         continue;
       }
       CellGroupCell additionalCellGroupCell =
           new CellGroupCell(
               originalOIDForCell,
               unaliasedAttribute,
               additionalCell.getValue(),
               null,
               LunaticConstants.TYPE_ADDITIONAL,
               null);
       cellGroup.addAdditionalCell(additionalAttribute, additionalCellGroupCell);
     }
   }
 }
 public static List<AttributeRef> extractRequestedAttributes(Dependency dependency) {
   List<AttributeRef> result = new ArrayList<AttributeRef>();
   result.addAll(dependency.getQueriedAttributes());
   for (AttributeRef attributeRef : dependency.getAdditionalAttributes()) {
     if (!result.contains(attributeRef)) {
       result.add(attributeRef);
     }
   }
   return result;
 }
 public static List<AttributeRef> extractRequestedAttributesWithExistential(
     Dependency dependency) {
   List<AttributeRef> result = new ArrayList<AttributeRef>();
   result.addAll(dependency.getQueriedAttributes());
   for (FormulaVariable variable : dependency.getConclusion().getLocalVariables()) {
     if (variable.getConclusionRelationalOccurrences().size() == 1) {
       continue;
     }
     for (FormulaVariableOccurrence occurrence : variable.getConclusionRelationalOccurrences()) {
       if (logger.isTraceEnabled()) logger.trace("Inspecting occurrence: " + occurrence);
       AttributeRef attribute = occurrence.getAttributeRef();
       AttributeRef unaliasedAttribute = ChaseUtility.unAlias(attribute);
       LunaticUtility.addIfNotContained(result, unaliasedAttribute);
     }
   }
   for (AttributeRef attributeRef : dependency.getAdditionalAttributes()) {
     if (!result.contains(attributeRef)) {
       result.add(attributeRef);
     }
   }
   return result;
 }