In this homework, you will implement a doubly-linked list ADT that allows an application to holdlist nodes and hop from node to node quickly. How do we make the list an ADT if applications can get access to list nodes? It’s easy: we put all the list code in a package called "list", and we declare the fields of DListNode protected--except the "item" field, which is public. Applications can’t access the "prev" or "next" fields of a DListNode, so they can’t violate any DList invariants.