Issue #2 решен. Реализован через HashMap<?, HashMap>.

Оcновные сложности вызвала некорректная проверка по ключу, пришлось переопределять методы equals и hashCode.
Далее сложность была в отладке программы. На некотором этапе программа запрашивала несуществующий элемент у ХешМапа. В результате был NullPointerException. В процессе отладки выяснилось, что при перезаписи пары key-value в value записывался пустой ХешМар, а потом к нему обращались. Записывается корректно, проблем нет.