class DataItemServiceFacade {

    Set<Class<? extends BaseDimensionalItemObject>> extractTargetEntities( final List<String> filters )
    {
        final Set<Class<? extends BaseDimensionalItemObject>> targetedEntities = new HashSet<>( 0 );

        if ( isNotEmpty( filters ) )
        {
            final Iterator<String> iterator = filters.iterator();

            while ( iterator.hasNext() )
            {
                final String filter = iterator.next();
                final Class<? extends BaseDimensionalItemObject> entity = extractEntityFromEqualFilter( filter );
                final Set<Class<? extends BaseDimensionalItemObject>> entities = extractEntitiesFromInFilter( filter );

                if ( entity != null || isNotEmpty( entities ) )
                {
                    if ( entity != null )
                    {
                        targetedEntities.add( entity );
                    }
                    if ( isNotEmpty( entities ) )
                    {
                        targetedEntities.addAll( entities );
                    }

                    iterator.remove();
                }
            }
        }
        else
        {
            // If no filter is set we search for all entities.
            targetedEntities.addAll( DATA_TYPE_ENTITY_MAP.values() );
        }

        return targetedEntities;
    }

      DataItemServiceFacade( final QueryService queryService );

}