ANTLR duplicar uma árvore

Eu uso o ANTLR para construir uma árvore (CommonTree) como follwing (idioma: JAVA):

  Parser.prog_return r = parser.prog();
  CommonTree t = (CommonTree) r.getTree();

Agora, preciso passar "t" como parâmetro e fazer algumas alterações sem afetar a árvore original. No entanto, com o ponteiro de Java, isso não pôde ser feito, por isso preciso duplicar a árvor

Estive pesquisando na internet, a coisa mais desagradável que pude encontrar é adupTree () método da classe ASTFactor

Qualquer sugestão ou conselho sobre como obter isso seria apreciada!

EDITA

@ Bart Kiers, Obrigado pela sua resposta, ele absolutamente funcion

Vejo que você está fazendo uma caminhada em profundidade pela árvore e crie um objeto CommonTree para cada nó visitad

Minha pergunta é agora, qual é a relação entre CommonToken e CommonTree e quais são esses atributos:

cTok.setCharPositionInLine(oTok.getCharPositionInLine());
cTok.setChannel(oTok.getChannel());
cTok.setStartIndex(oTok.getStartIndex());
cTok.setStopIndex(oTok.getStopIndex());
cTok.setTokenIndex(oTok.getTokenIndex());

questionAnswers(2)

yourAnswerToTheQuestion