Thrown when a semantically malformed parameterized type is
encountered by a reflective method that needs to instantiate it.
For example, if the number of type arguments to a parameterized type
is wrong.

Causes the current thread to wait until another thread invokes the
notify() method or the
notifyAll() method for this object, or
some other thread interrupts the current thread, or a certain
amount of real time has elapsed.