∀ {m : Type u → Type u} [inst : (a : Type u) → SizeOf (m a)] (listM : Type u → Type u) (nil : {α : Type u} → listM α)
  (cons : {α : Type u} → α → listM α → listM α) (thunk : {α : Type u} → (Unit → listM α) → listM α)
  (squash : {α : Type u} → (Unit → m (listM α)) → listM α)
  (uncons : {α : Type u} → [Monad m] → listM α → m (Option (α × listM α)))
  (uncons? : {α : Type u} → listM α → Option (Option (α × listM α))),
  sizeOf
      { listM := listM, nil := nil, cons := cons, thunk := thunk, squash := squash, uncons := uncons,
        uncons? := uncons? } =
    1