// Checked vs. Jan 11, 2011
        public override bool Equals(object other)
        {
            // Java checks
            if (other == this)
            {
                return(true);
            }
            if (!(other is com.epl.geometry.MultiVertexGeometryImpl))
            {
                return(false);
            }
            com.epl.geometry.MultiVertexGeometryImpl otherMulti = (com.epl.geometry.MultiVertexGeometryImpl)other;
            if (!(m_description.Equals(otherMulti.m_description)))
            {
                return(false);
            }
            if (IsEmptyImpl() != otherMulti.IsEmptyImpl())
            {
                return(false);
            }
            if (IsEmptyImpl())
            {
                return(true);
            }
            // both geometries are empty
            int pointCount      = GetPointCount();
            int pointCountOther = otherMulti.GetPointCount();

            if (pointCount != pointCountOther)
            {
                return(false);
            }
            for (int i = 0; i < m_description.GetAttributeCount(); i++)
            {
                int semantics = m_description.GetSemantics(i);
                com.epl.geometry.AttributeStreamBase stream      = GetAttributeStreamRef(semantics);
                com.epl.geometry.AttributeStreamBase streamOther = otherMulti.GetAttributeStreamRef(semantics);
                int components = com.epl.geometry.VertexDescription.GetComponentCount(semantics);
                if (!stream.Equals(streamOther, 0, pointCount * components))
                {
                    return(false);
                }
            }
            return(true);
        }