@Override
    public QueryCriteria visit(ContainsAttributesQueryCriteria criteria, Void arg) {
      Set<AttributeReference> combinedAttRefs =
          combineAttributeReferences(criteria.getAttributeReference());
      if (combinedAttRefs.size() == 1) {
        return criteria;
      }

      DisjunctionBuilder disjunctionBuilder = new DisjunctionBuilder();
      for (AttributeReference combinedAttRef : combinedAttRefs) {
        disjunctionBuilder.add(
            new ContainsAttributesQueryCriteria(
                combinedAttRef, criteria.getAttributes(), criteria.isExclusive()));
      }

      return disjunctionBuilder.build();
    }
 @Override
 public QueryCriteria visit(
     ContainsAttributesQueryCriteria criteria, List<AttributeReference.Key> arg) {
   return new ContainsAttributesQueryCriteria(
       new AttributeReference(arg), criteria.getAttributes(), criteria.isExclusive());
 }