public Map getArgumentTypeChoicesArray(int argumentType)
    {
        Map map = new HashMap();
        String[] labels = null;
        switch (argumentType)
        {
            case ARGUMENT_TYPE__TARGET_TYPE:
                Integer targetTypes[] = getTargetTypes();
                for (int targetTypeIndex = 0; targetTypeIndex < targetTypes.length; targetTypeIndex++)
                {
                    Number targetTypeNumber = targetTypes[targetTypeIndex];
                    if (null != targetTypeNumber)
                    {
                        int targetType = targetTypeNumber.intValue();
                        String label = getTargetTypeName(targetType);
                        Object value = targetTypeNumber;
                        map.put(label, value);
                    }
                    else
                    {
                        String label = "Unknown TargetType #" + targetTypeIndex;
                        Object value = "Unknown TargetType #" + targetTypeIndex;
                        map.put(label, value);
                    }
                }
                break;
            case ARGUMENT_TYPE__FACET_ATTRIBUTE_TYPE:
                Map<Integer,String> facetAttributeNameByFacetAttributeTypeMap = getFacetAttributeNameByFacetAttributeTypeMap();
                Iterator<Map.Entry<Integer,String>> entryIterator = facetAttributeNameByFacetAttributeTypeMap.entrySet().iterator();
                while (entryIterator.hasNext())
                {
                    Map.Entry<Integer,String> entry = entryIterator.next();
                    String label = entry.getValue();
                    Integer bitPositionNumber = entry.getKey();
                    int bitPosition = bitPositionNumber.intValue();
                    Integer value = new Integer(1 << bitPosition);
                    // IMPLEMENT: check that label wasn't already in the map with another value?
                    map.put(label, value);
                }
                break;
            case ARGUMENT_TYPE__PARTY_MEMBER:
                labels = getPartyMemberChoiceArray();
            case ARGUMENT_TYPE__MINI_ICON_NUMBER:
                if (labels == null)
                {
                    labels = getMiniIconNameChoiceArray();
                }
                
                // code common to all of the above cases
                for (int labelIndex = 0; labelIndex < labels.length; labelIndex++)
                {
                    String label = labels[labelIndex];
                    Object value = new Integer(labelIndex);
                    map.put(label, value);
                }
                break;
            default:
                throw new RuntimeException("No choices list for argumentType: " + argumentType);
        }
        
        return map;
    }