@Override
public Scope outgoingScopeFor( Set<Scope> incomingScopes )
{
Map<String, Fields> groupingSelectors = resolveGroupingSelectors( incomingScopes );
Map<String, Fields> sortingSelectors = resolveSortingSelectors( incomingScopes );
Fields declared = resolveDeclared( incomingScopes );
Fields outGroupingFields = resultGroupFields;
if( outGroupingFields == null && isCoGroup() )
outGroupingFields = createJoinFields( incomingScopes, groupingSelectors, declared );
Scope.Kind kind = getScopeKind();
return new Scope( getName(), declared, outGroupingFields, groupingSelectors, sortingSelectors, declared, kind );
}