protected void processGlobalResourceARList(Sim_event ev)
    {
        LinkedList regionalList = null;   // regional GIS list
        int eventTag = AbstractGIS.GIS_INQUIRY_RESOURCE_AR_LIST;
        boolean result = false;

        // for a first time request, it needs to call the system GIS first,
        // then asks each regional GIS for its resource IDs.
        if (globalResARList_ == null)
        {
            // get regional GIS list from system GIS first
            regionalList = requestFromSystemGIS();

            // ask a resource list from each regional GIS
            result = getListFromOtherRegional(regionalList, eventTag);
            if (result == true)
            {
                globalResARList_ = new ArrayList();  // storing global AR
                numAR_ = regionalList.size() - 1;    // excluding GIS itself

                // then store the user ID
                Integer id = (Integer) ev.get_data();
                userARList_ = new ArrayList();
                userARList_.add(id);
                return;     // then exit
            }
        }

        // cache the request and store the user ID if it is already sent
        if (numAR_ > 0 && userARList_ != null && userARList_.size() > 0)
        {
            Integer id = (Integer) ev.get_data();
            userARList_.add(id);
            return;     // then exit
        }

        result = sendListToSender(ev, globalResARList_);
        if (result == false)
        {
            System.out.println(super.get_name() +
                ".processGlobalResourceARList(): Warning - can't send a " +
                "resource AR list to sender.");
        }
    }