public static void printRemoteClass(StringBuilder sb, RemoteClass remoteClass) {

    if (remoteClass.isAbstract()) {
      sb.append("abstract ");
    }

    sb.append("class ");
    sb.append(remoteClass.getName());
    if (remoteClass.getExtends() != null) {
      sb.append(" extends ");
      sb.append(remoteClass.getExtends().getName());
    }
    sb.append("\n");
    sb.append("\n");

    if (remoteClass.getConstructor() != null) {
      sb.append("   Declared Constructor: \n");
      sb.append("       ");
      printMethod(sb, remoteClass.getConstructor(), true);
      sb.append("\n");
    }

    if (!remoteClass.getMethods().isEmpty()) {
      sb.append("   Declared Methods: \n");
      for (Method method : remoteClass.getMethods()) {
        sb.append("       ");
        printMethod(sb, method, false);
      }
      sb.append("\n");
    }

    if (!remoteClass.getEvents().isEmpty()) {
      sb.append("   Declared Events: \n");
      for (TypeRef event : remoteClass.getEvents()) {
        sb.append("       ");
        sb.append(event.getName());
        sb.append("\n");
      }
      sb.append("\n");
    }
  }