code: private E firstDataItem() {
          for (Node p = head; p != null; p = succ(p)) {
              Object item = p.item;
              if (p.isData) {
                  if (item != null && item != p)
                      return LinkedTransferQueue.<E>cast(item);
              }
              else if (item == null)
                  return null;
          }
          return null;
      }
docs: Returns the item in the first unmatched node with isData; or
  null if none.  Used by peek.