I would suggest leveraging Guava's `Iterables` for this rather than iterating with an index:

```
leader = new Predicate() { ... }
return Iterables.tryFind(counters,leader).get();
```
then the `commitToLeader` body would do something like:

```
getLeader().commit(bytes);
```

This will fail on the `get` if no leader can be found.