test(`#${method} throws when inserting item that is already in this list`, (assert) => {
    let list = new LinkedList();
    let item = new LinkedItem();
    list[method](item);

    assert.throws(
      () => list[method](item),
      /Cannot insert.*already in a list/
    );
  });
 test(`#${method} calls adoptItem`, (assert) => {
   let adoptedItem;
   let list = new LinkedList({
     adoptItem(item) {
       adoptedItem = item;
     }
   });
   let item = new LinkedItem();
   list[method](item);
   assert.equal(adoptedItem, item, 'item is adopted');
 });
 test(`#${method} initial item`, (assert) => {
   let list = new LinkedList();
   let item = new LinkedItem();
   list[method](item);
   assert.equal(list.length, 1, 'length is one');
   assert.equal(list.isEmpty, false, 'isEmpty is false');
   assert.equal(list.head, item, 'head is item');
   assert.equal(list.tail, item, 'tail is item');
   assert.equal(item.next, null, 'item next is null');
   assert.equal(item.prev, null, 'item prev is null');
 });
 () => list[method](item),