Passando ArrayList apenas como valor e não como referência
Simplificando, eu tenho um método com um parâmetro ArrayList. No método, modifico o conteúdo da ArrayList para fins relevantes apenas ao que é retornado pelo método. Portanto, eu não quero que o ArrayList que está sendo passado como o parâmetro seja afetado (isto é, não passado como uma referência).
Tudo o que tentei não conseguiu o efeito desejado. O que eu preciso fazer para que eu possa fazer uso de uma cópia do ArrayList apenas no método, mas não alterar a variável real?