Тези `middle.first`, `middle.last` и прочее не ми е ясно какви са, без да пускам кода. Още повече, `lines[middle.first[0] - 1]`.

Можеш ли да намериш по-хубав начин да ги опишеш?