```
private Node<T> copyList(Node<T> cn1) {
    Node<T> temp = cn1;
    Node<T> newHead = null;
    Node<T> end = null;     
    newHead = new Node<T>((T)(temp.x).clone(), null);

    end = newHead;
    temp = temp.next;

    while (temp != null) {
        end.next = new Node<T>((T)(temp.x).clone(), null);

        end = end.next;
        temp = temp.next;
    }

    // Now the entire list is created, just return its head pointer
    return newHead;
}

```

The method is trying to make deep copies for generic nodes in a `LinkedList`, the method is correct and I'm just confused about the line `end = newHead;`. Shouldn't `end` and `newHead` reference the same object? Why is the line `end = end.next;` not updating `newHead`?

I'm sorry if the question is too obvious.