@Override
  public void visit(MethodDecl method) {
    System.out.print("public ");
    if (method.getReturnType() != null) method.getReturnType().accept(this);
    System.out.print(" ");
    if (method.getId() != null) method.getId().accept(this);
    System.out.print(" (");

    if (method.getParams() != null) {
      for (int i = 0; i < method.getParams().size(); i++) {
        if (method.getParams().elementAt(i) == null) continue;

        method.getParams().elementAt(i).accept(this);
        if (i < method.getParams().size() - 1) System.out.print(", ");
      }
    }

    System.out.println(") {");

    if (method.getVars() != null) {
      for (int i = 0; i < method.getVars().size(); i++) {
        if (method.getVars().elementAt(i) == null) continue;

        System.out.print("\t\t");
        method.getVars().elementAt(i).accept(this);
        System.out.println();
      }
    }

    if (method.getStms() != null) {
      for (int i = 0; i < method.getStms().size(); i++) {
        if (method.getStms().elementAt(i) == null) continue;

        System.out.print("\t\t");
        method.getStms().elementAt(i).accept(this);
        System.out.println();
      }
    }

    System.out.print("\t\treturn ");
    if (method.getReturnExp() != null) method.getReturnExp().accept(this);
    System.out.println(";");
    System.out.println("\t}");
  }