@aledsage yeah, I think we should just add a new `@Beta` method for now, like your suggested `getReplicas()`, and stick it on the interface. We can worry about _proper_ generics and `Iterable<X>` implementations later.

I have used a similar mechanism to get an `Iterable` collection from a `Group` myself, so it would be good to move the transforming function to a separate method in an `EntityFunctions` class, that accepted an `Entity` and cast it to a particular class:

    public static <E> Function<Entity, E> transformer(final Class<E> klass) {
        return new Function<Entity, E>() {
            public E apply(Entity input) {
                return klass.cast(input);
            }
        };
    }
 
Then we can do things like the code below:

    Iterable<WebAppService> servers = Iterables.transform(Iterables.filter(
            webCluster.getCluster().getMembers(), Predicates.instanceOf(WebAppService.class)),
            transformer(WebAppService.class));`