Я такой пример не помню, но в принципе реализация понятна.
Вопрос в другом. Для данной задачи, в общем случае, нужен т.н. неправильный граф.
Например, если 2 пары меняются партнёрами и в обоих случаях дают потомство ...
Экранная клавиатура (ЭК) - она же плавающая и появляется только на полях ввода ...
Вот для этого и проверяем - что бы не открывать список (с ошибкой), если структура изменилась.