code: 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);
          }
      }
docs: 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