public static bool TestAreEqual(SpaceImpl a, SpaceImpl b)
        {
            foreach (KeyValuePair<CoordPair, Connection> kvp in a.m_connections)
            {
                if (b.m_connections[kvp.Key] != kvp.Value)
                {
                    return false;
                }
            }

            foreach (KeyValuePair<CoordPair, Connection> kvp in b.m_connections)
            {
                if (a.m_connections[kvp.Key] != kvp.Value)
                {
                    return false;
                }
            }

            foreach (KeyValuePair<Point, HashSet<String>> kvp in a.m_qualifiers)
            {
                foreach (String s in kvp.Value)
                {
                    if (!b.m_qualifiers[kvp.Key].Contains(s))
                    {
                        return false;
                    }
                }
            }

            foreach (KeyValuePair<Point, HashSet<String>> kvp in b.m_qualifiers)
            {
                foreach (String s in kvp.Value)
                {
                    if (!a.m_qualifiers[kvp.Key].Contains(s))
                    {
                        return false;
                    }
                }
            }

            return true;
        }
        public ISpace DeepCopy()
        {
            SpaceImpl copy = new SpaceImpl();

            foreach (KeyValuePair<Point, ScreenConstructionParameters> kvp in m_screenParameters)
            {
                copy.m_screenParameters.Add(kvp.Key, kvp.Value.DeepCopy());
            }

            foreach (KeyValuePair<Point, HashSet<String>> kvp in m_qualifiers)
            {
                HashSet<String> qualifiers = new HashSet<String>(kvp.Value);
                copy.m_qualifiers.Add(kvp.Key, qualifiers);
            }

            copy.m_connections = new Dictionary<CoordPair, Connection>(this.m_connections);
            copy.m_openConnections = new Dictionary<CoordPair, Connection>(this.m_openConnections);

            copy.m_hashCode = this.m_hashCode;

            return copy;
        }