private void geraCodigoInspecao(NoPara noPara) throws ExcecaoVisitaASA {
   NoExpressao incremento = noPara.getIncremento();
   if (incremento != null) {
     NoOperacaoAtribuicao atribuicao = (NoOperacaoAtribuicao) incremento;
     if (atribuicao.getOperandoEsquerdo() instanceof NoReferenciaVariavel) {
       NoReferenciaVariavel referencia = (NoReferenciaVariavel) atribuicao.getOperandoEsquerdo();
       NoDeclaracao origem = referencia.getOrigemDaReferencia();
       if (origem instanceof NoDeclaracaoVariavel) {
         Utils.geraCodigoParaInspecao((NoDeclaracaoVariavel) origem, saida, nivelEscopo, false);
       } else if (origem instanceof NoDeclaracaoParametro) {
         Utils.geraCodigoParaInspecao((NoDeclaracaoParametro) origem, saida, nivelEscopo);
       }
     }
   }
 }
    @Override
    public Void visitar(NoPara no) throws ExcecaoVisitaASA {
      saida.append("for(");
      if (no.getInicializacao() != null) {
        no.getInicializacao().aceitar(this);
      }

      saida.append("; "); // separador depois da inicialização do for

      no.getCondicao().aceitar(this);

      saida.append("; "); // separador depois da c

      if (no.getIncremento() != null) {
        no.getIncremento().aceitar(this);
      }

      saida.append(")").println(); // fecha o parênteses do for

      String identacao = Utils.geraIdentacao(nivelEscopo);

      saida.append(identacao).append("{").println();

      geraVerificacaoThreadInterrompida();

      if (gerandoCodigoParaInspecaoDeSimbolos) {
        geraCodigoInspecao(no);
      }

      visitarBlocos(no.getBlocos());

      saida.println();

      saida.append(identacao).append("}").println();

      return null;
    }