/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.query.sql;
import java.util.Collection;
import java.util.Set;
import org.teiid.designer.query.sql.lang.ILanguageObject;
import org.teiid.designer.query.sql.symbol.IGroupSymbol;
/**
*
*/
public interface IGroupsUsedByElementsVisitor<LO extends ILanguageObject, GS extends IGroupSymbol> {
/**
* Find the groups containd in the given object.
*
* Duplicates are removed.
*
* @param object Language object
*
* @return Collection of {@link IGroupSymbol}
*/
Set<GS> findGroups(LO object);
/**
* Find the groups contains in the collection of given objects.
*
* Duplicates are removed.
*
* @param objects Collection of language objects
*
* @return Collection of {@link IGroupSymbol}
*/
<T extends LO> Set<GS> findGroups(Collection<T> objects);
}