code: public static boolean isAssignableFrom(String lookingFor, TypeDescriptor candidate) {
  		String[] interfaces = candidate.getSuperinterfacesName();
  		for (String intface : interfaces) {
  			if (intface.equals(lookingFor)) {
  				return true;
  			}
  			boolean b = isAssignableFrom(lookingFor, candidate.getTypeRegistry().getDescriptorFor(intface));
  			if (b) {
  				return true;
  			}
  		}
  		String supertypename = candidate.getSupertypeName();
  		if (supertypename == null) {
  			return false;
  		}
  		if (supertypename.equals(lookingFor)) {
  			return true;
  		}
  		return isAssignableFrom(lookingFor, candidate.getTypeRegistry().getDescriptorFor(supertypename));
  	}
docs: /*
  Determine if the type specified in lookingFor is a supertype (class/interface) of the specified typedescriptor, i.e. can an
  object of type 'candidate' be assigned to a variable of typ 'lookingFor'.
  
  @return true if it is a supertype