public static function Priority($ContextType, $Extension, $MapType = NULL, $PriorityType = self::PRIORITY_TYPE_PREFER, $PriorityDuration = self::PRIORITY_ONCE)
 {
     $MapGroupIdentifier = implode('|', array($ContextType, $Extension));
     $MapGroupHashes = GetValue($MapGroupIdentifier, self::$MapGroups, array());
     foreach ($MapGroupHashes as $MapHash => $Trash) {
         $ThisMapType = self::Map($MapHash)->MapType();
         // We're restricting this priority to a certain maptype, so exclude non matchers
         if (!is_null($MapType) && $ThisMapType != $MapType) {
             continue;
         }
         $PriorityHashes[$MapHash] = array('maptype' => $ThisMapType, 'duration' => $PriorityDuration, 'prioritytype' => $PriorityType);
     }
     if (!sizeof($PriorityHashes)) {
         return FALSE;
     }
     if (!is_array(self::$Priorities)) {
         self::$Priorities = array();
     }
     if (!array_key_exists($ContextType, self::$Priorities)) {
         self::$Priorities[$ContextType] = array(self::PRIORITY_TYPE_RESTRICT => array(), self::PRIORITY_TYPE_PREFER => array());
     }
     // Add new priorities to list
     self::$Priorities[$ContextType][$PriorityType] = array_merge(self::$Priorities[$ContextType][$PriorityType], $PriorityHashes);
     return TRUE;
 }