public int RemoveData(T data)
        {
            int id = -1;
            KeyValuePair <int, T> kvp;

            if (m_Collection.dictionary.TryGetValue(data.id, out kvp))
            {
                id = kvp.Key;
                m_Collection.Remove(data.id);
                m_DataIdLookup.Remove(id);
                m_DataDirty = true;
            }
            return(id);
        }