// Exp e;
  // Identifier i;
  // ExpList el;
  public Object visit(Call n) { // Implenetada, mas gambiarral. Se der tempo eu ajeito.
    Object ep = n.e.accept(this);
    n.i.accept(this);

    List<String> pars = new ArrayList<String>(); // Lista de tipos de parâmetros.
    for (int i = 0; i < n.el.size(); i++) {
      Object ep1 = n.el.get(i).accept(this);
      if (ep1 instanceof String) {
        pars.add((String) ep1);
      }
    }
    if (ep instanceof String) {
      String clas = (String) ep;
      if (existeClass(clas)) {
        List<SymbolTuple> listscop = table.getTable().get("Global" + clas);
        for (SymbolTuple sym : listscop) {
          if (sym.getType().equalsIgnoreCase("Method") && sym.getValue().equalsIgnoreCase(n.i.s)) {
            if (sym.getPars() == null && pars.size() == 0) return sym.getArg();
            else {
              if (sym.getPars() != null && sym.getPars().size() == pars.size()) {
                for (int i = 0; i < pars.size(); i++) {
                  String sup2 = getSuperClass(pars.get(i));
                  boolean valida =
                      !(sym.getPars().get(i).equalsIgnoreCase(pars.get(i))
                          || sym.getPars().get(i).equalsIgnoreCase(sup2)); // Tratar a heranca.
                  if (valida) {
                    error.add("Lista de parâmetros incompativeis! Linha: " + n.getLine_number());
                    return null;
                  }
                }
                return sym.getArg();
              } else
                error.add("Lista de parâmetros incompativeis-----! Linha: " + n.getLine_number());
            }
          }
        }
        if (getSuperClass(clas) != null && existeClass(getSuperClass(clas))) { // Na superclasse
          List<SymbolTuple> listscop2 = table.getTable().get("Global" + getSuperClass(clas));
          for (SymbolTuple sym : listscop2) {
            if (sym.getType().equalsIgnoreCase("Method")
                && sym.getValue().equalsIgnoreCase(n.i.s)) {
              if (sym.getPars() == null && pars.size() == 0) return sym.getArg();
              else {
                if (sym.getPars() != null && sym.getPars().size() == pars.size()) {
                  for (int i = 0; i < pars.size(); i++) {
                    String sup2 = getSuperClass(pars.get(i));
                    boolean valida =
                        !(sym.getPars().get(i).equalsIgnoreCase(pars.get(i))
                            || sym.getPars().get(i).equalsIgnoreCase(sup2)); // Tratar a heranca.
                    if (valida) {
                      error.add("Lista de parâmetros incompativeis! Linha: " + n.getLine_number());
                      return null;
                    }
                  }
                  return sym.getArg();
                } else
                  error.add("Lista de parâmetros incompativeis-----! Linha: " + n.getLine_number());
              }
            }
          }
        }
        error.add("Mehtodo nao existe! Linha: " + n.getLine_number());
      } else error.add("Classe nao existe! Linha: " + n.getLine_number());
    }

    return null;
  }