docs: @Override
    public final Method[] retrieveMethods(final Class<?> clazz) {
      Set<Method> fieldsSet = new HashSet<Method>();
      for (Method mfd : clazz.getDeclaredMethods()) {
        int modifiersMask = mfd.getModifiers();
        if ((modifiersMask & Modifier.PRIVATE) == 0
              && (modifiersMask & Modifier.STATIC) == 0) {
          fieldsSet.add(mfd);
        }
      }
      final Class<?> superClazz = clazz.getSuperclass();
      if (superClazz != null && superClazz != java.lang.Object.class) {
        for (Method mfd : retrieveMethods(superClazz)) {
          fieldsSet.add(mfd);
        }
      }
      return fieldsSet.toArray(new Method[fieldsSet.size()]);
    }