/// <summary>
        /// Store a given value if the given key isn't already used
        /// for a value of that type.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="item"></param>
        public static void AddItem <T>(RescItem <T> item)
        {
            RescItemKey rescItemKey = new RescItemKey(item.Name.NormaliseString(), typeof(T));

            if (!items.ContainsKey(rescItemKey))
            {
                items.Add(rescItemKey, item.Item);
            }
        }
        /// <summary>
        /// A method which returns true if a resource of the
        /// given type and name is stored and outputs said
        /// resource.
        /// </summary>
        /// <typeparam name="T">The type of the requested resource.</typeparam>
        /// <param name="key">The name of the requested resource.</param>
        /// <param name="item">The outputted resource (if it is found).</param>
        /// <returns></returns>
        public static bool GetItem <T>(string key, out T item)
        {
            Type        type        = typeof(T);
            RescItemKey rescItemKey = new RescItemKey(key.NormaliseString(), type);

            if (items.ContainsKey(rescItemKey))
            {
                item = (T)(items[rescItemKey]);
                return(true);
            }
            item = default(T);
            return(false);
        }