Lista encadeada simples - impressão

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();
	}

}