Problema de passagem por referência

Pessoal , estou com um problema com um objeto ArrayList. Tenho uma classe TableData.java que possui um List columns = new ArrayList () (o código está abaixo). Quando passo um ArrayList pra preencher ele ,pela classe ACESSA (através do método set) e depois limpo ele (pela mesma classe ACESSA, através de clear()),ele é limpo tanto em TableData.java quanto na classe
ACESSA . Gostaria que fosse limpo somente na classe ACESSA e não em TableData.java, tem jeito ?

[code]
CLASSE ACESSA

public void saveAllColumns()
{
System.out.println(“SAVE ALL COLUMNS”);

   List<String> columnsName = new ArrayList<String>();
   List<ColumnData> columns = new ArrayList<ColumnData>();      
   ColumnData column;
   
   
   
   for(int i=0; i<selectedTablesModel.size(); i++)
   {    
    columnsName = con.getColumnsName(selectedTablesModel , i);
   
    
    TableData tableData = new TableData((String)selectedTablesModel.get(i));
    System.out.println("TABLE "+tableData.getName());
    
    for(int j=0; j<columnsName.size(); j++)
    {  
       column = new ColumnData(columnsName.get(j), null, null, false, false);
       columns.add(column);
       
       int indexOf = columns.indexOf(column);
       column =  columns.get(indexOf);
       System.out.println("COLUMNS indexOF"+ indexOf + " " + columnsName.get(j) + " " + column.getAlias() + column.getErf() + column.getInclude());   
    }
    
    tableData.setColumns(columns);
    
    tablesData.add(tableData);
    columnsName.clear();
    columns.clear();
   } 
}        

CLASSE TableData.JAVA

public class TableData {

private List columns = new ArrayList ();

public void setColumns(List columns) {
this.columns = columns;
}[/code]