CtField getField2(String name) {
        CtField df = getDeclaredField2(name);
        if (df != null)
            return df;

        try {
            CtClass[] ifs = getInterfaces();
            int num = ifs.length;
            for (int i = 0; i < num; ++i) {
                CtField f = ifs[i].getField2(name);
                if (f != null)
                    return f;
            }

            CtClass s = getSuperclass();
            if (s != null)
                return s.getField2(name);
        }
        catch (NotFoundException e) {}
        return null;
    }