Impressão - lista encadeada

Ao usar um método para lista atributos de um objeto, o método fica em lup infinito. Alguém poderia me ajudar?

   public void menu (int op){

   Documento doc = new Documento();		

        switch (op) {
		case 1:
			doc.ler();
			insere(doc);
			break;
		case 2:
			lista();
			break;
         }
   }




public void insere(Documento doc) {
	
	if(inicio == null ) {
		inicio = doc;
		fim = doc;
	}
	else {
		fim.setProx(doc);
		fim = doc;
	}
}

public void lista() {
	Documento aux = inicio;
		while(aux != null) {
			System.out.println(aux.getNome());
			aux = aux.getProx();
		}
}

}