public boolean subtypeOf(CtClass clazz) throws NotFoundException {
        if (super.subtypeOf(clazz))
            return true;

        String cname = clazz.getName();
        if (cname.equals(javaLangObject)
            || cname.equals("java.lang.Cloneable")
            || cname.equals("java.io.Serializable"))
            return true;

        return clazz.isArray()
            && getComponentType().subtypeOf(clazz.getComponentType());
    }