В любом случае HashMap не должен появляться в вашей модели UML. HashMap - это всего лишь реализация квалифицированной ассоциации. Вероятно, это даже просто скорость, улучшающая неквалифицированную ассоциацию. Поэтому, если у вас есть класс A с HashMap, вы бы моделировали UML-класс A, UML-класс B и ассоциацию UML от A до B. Вы можете добавить квалификатор в ассоциацию, если он квалифицирован ключом, который не является атрибутом B. Если ваш ключ HashMap является именем B (и B имеет это имя в качестве атрибута), вы просто опустите квалификатор.
Чтобы обозначить реализацию вашей Ассоциации (вы хотите реализовать ее с помощью HashSet), вы можете добавить это как ключевое слово или создать для него стереотип (более сложный).
Я думаю, что это зависит от того, как Вы запускаете новый Командный процессор. Например, при изменении переменной окружения PATH под свойствами System изменение не отражается, пока Вы не открываете новую Командную строку. Я думаю, когда Вы запускаете новый процесс "cmd" (от диалогового окна Выполнения, например), Вы получаете новую копию всех переменных среды, но если Вы запускаете командную строку другой путь затем, который Вы не делаете.
Для чего-то сделанного через сценарий как этот Вы, возможно, должны перезапустить, прежде чем Вы заметите изменение.
Как Вы запускаете командный процессор? С TaskManager?
Я подозреваю, что Вы могли бы запускать его с Проводника - если я помню правильно, это могло meen, что Вы наследовали родительские процессы (Windows Explorer в этом случае) СОЕДИНЯЮТ переменную каналом. Так как это было установлено, прежде чем Ваш установщик работал, Вы видите старое значение.
Не уверенный, если это помогает...
В http://support.microsoft.com/kb/310519 говорится, что для системных переменных (из которого ПУТЬ является одним из) требует перезапуска, хотя у меня есть чувство, что выходить из системы и на может быть достаточно.
Почему Вы используете CustomAction для этого? Поддержки Windows Installer, изменяющие переменные среды исходно. Кроме того, я думаю, что Windows Installer отправляет широковещательное сообщение для обновления системы, когда переменные среды изменяются. Это может означать, что Вы не должны перезагружать..., но это было некоторое время, так как я попробовал так YMMV.
Как Вы добавляете переменную среды?
Не используя внешних инструментов, можно добавить его к реестру. Затем Ваш тест открытия нового командного окна отразит Ваше изменение.