you cannot say "? extends T" because after the "extends" the compiler is wayting for a type, not a generic parameter. Nitpicking: it would compile however if "T" was a real type of a class with name "T".
all events occur in real time
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com