//@ As usually, we start by defining the types. Everything is parameterized by the type `T` of the
//@ data stored in the list.
// A node of the list consists of the data, and two node pointers for the predecessor and successor.
//@ As usually, we start by defining the types. Everything is parameterized by the type `T` of the
//@ data stored in the list.
// A node of the list consists of the data, and two node pointers for the predecessor and successor.