Question: I am trying to clone a list of Cloneables:

```
public static <T extends Cloneable> List<T> cloneList(List<T> list)
{
    List<T> out = new ArrayList<T>();
    for(int i=0;i<list.size();i++)
    {
        out.add((T)((T)list.get(i)).clone());
    }
    return out;
}

```

which throws the error:

```
Helpers.java:40: error: cannot find symbol
            out.add((T)((T)list.get(i)).clone());
                                       ^
  symbol:   method clone()
  location: interface Cloneable

```

Why is that; isn't `clone()` the single method the `Cloneable` interface is all about?

Answer: 
clone() is protected by default , could you please override it as public
You need to implement `Cloneable` and override `clone()` to use it (make it `public`, it's `protected` in the `Object` class).