Well, let's say you have the following push notification subclasses:

- `FancyApnsPushNotification extends SimpleApnsPushNotification`
- `ShinyApnsPushNotification extends SimpleApnsPushNotification`

You might have two `PushManager` instances in your app, each with one of those two push notification subclasses. You could then use a single listener typed for the base class to listen for failures on both push managers. It might look something like this:

```java
public class MyFailedConnectionListener implements FailedConnectionListener<SimpleApnsPushNotification> {

    public void handleFailedConnection(final PushManager<? extends SimpleApnsPushNotification> pushManager, final Throwable cause) {
        // …
    }
}
```

That would work because both push managers would be typed to subclasses of `SimpleApnsPushNotification`, and thus would match `PushManager<? extends SimpleApnsPushNotification>`. If we just did `<T>` for the push manager argument, we'd have to match the type exactly and would lose some flexibility. Does that make any sense?