private static void renderMethods(Class cls) {
    Method[] methods = cls.getMethods();

    Method m;
    StringAppender appender = new StringAppender();
    int mf;
    for (int i = 0; i < methods.length; i++) {
      appender.append(TextUtil.paint(' ', PADDING + 2));
      if (((mf = (m = methods[i]).getModifiers()) & Modifier.PUBLIC) != 0) appender.append("public");
      else if ((mf & Modifier.PRIVATE) != 0) appender.append("private");
      else if ((mf & Modifier.PROTECTED) != 0) appender.append("protected");

      appender.append(' ').append(m.getReturnType().getName()).append(' ').append(m.getName()).append("(");
      Class[] parmTypes = m.getParameterTypes();
      for (int y = 0; y < parmTypes.length; y++) {
        if (parmTypes[y].isArray()) {
          appender.append(parmTypes[y].getComponentType().getName() + "[]");
        }
        else {
          appender.append(parmTypes[y].getName());
        }
        if ((y + 1) < parmTypes.length) appender.append(", ");
      }
      appender.append(")");

      if (m.getDeclaringClass() != cls) {
        appender.append("    [inherited from: ").append(m.getDeclaringClass().getName()).append("]");
      }


      if ((i + 1) < methods.length) appender.append('\n');
    }

    System.out.println(appender.toString());
  }