I recognize the need for this feature, but I do agree that this is perhaps unnecessarily complicated.

> Another more simple approach would be to give the ApnsConnection object a name (which would be stored as a private final, non-empty trimmed string). The PushManager would generate the name and pass it in to the ApnsConnection through the constructor.

That, I think, would be my strong preference. If per-`PushManager` connection numbering is really desirable (and I'm not necessarily sold on that idea), it seems like keeping a counter in the `PushManager` itself is a waaaaaay simpler thing to do.