Что именно не так в данной реализации ? Или это просто баг ? Могу решить другими способами, но этот родил сам и хочу разобраться.