public static void isAssignable(Class superType, Class subType, String message) {
        notNull(superType, "Type to check against must not be null");
        if (subType == null || !superType.isAssignableFrom(subType)) {
            throw new IllegalArgumentException(message + subType + " is not assignable to " + superType);
        }
    }
Assert that <code>superType.isAssignableFrom(subType)</code> is <code>true</code>.
<pre class="code">Assert.isAssignable(Number.class, myClass);</pre>
@param superType the super type to check against
@param subType the sub type to check
@param message a message which will be prepended to the message produced by
the function itself, and which may be used to provide context. It should
normally end in a ": " or ". " so that the function generate message looks
ok when prepended to it.
@throws IllegalArgumentException if the classes are not assignable
src/main/java/org/apache/shiro/lang/util/Assert.java