private function parseAreaWhitelist($area_whitelist)
    {
        $areas = array();

        $whitelist = 0;
        foreach ($area_whitelist as $area) {
            $whitelist = $whitelist | $area;
        }

        $tz_data = DateTimeZone::listIdentifiers($whitelist);

        foreach ($tz_data as $id) {
            $area = $this->getArea($id);
            $region = $this->getRegion($id);

            if (!array_key_exists($area, $areas)) {
                $areas[$area] = array();
            }
            $areas[$area][] = $region;
        }

        return $areas;
    }