    "Thrown when declarations are applied with invalid or incompatible type arguments.
     Also throw when trying to apply member declarations with no containers, or toplevel
     declarations with a container.

     For example if you try to apply `Foo` with `String`, hoping to get a `Foo<String>`
     but the type parameter for `Foo` only accepts types that satisfy `Numeric`.
     "
    shared class TypeApplicationException(String message) extends Exception(message){}