Что-то Map тяжело дается в плане понимания. Насколько я могу судить, код должен работать корректно, но он этого не делает.