@Override
	public <T extends AggregateRoot<?>> Collection<T> loadBy(Class<T> type,
			Specification<T> specification) {
        final List<T> satisfied = new ArrayList<T>();
        
        for (final Object aggregate : aggregates.values()) {
        	if (aggregate.getClass().isAssignableFrom(type)) {
	            if (specification.isSatisfiedBy((T) aggregate)) {
	                satisfied.add((T) aggregate);
	            }
        	}
        }
        
        return satisfied;
	}