public object Clone()
 {
     Intersection i = new Intersection();
     i.A = A;
     i.B = B;
     i.T0 = T0;
     i.T1 = T1;
     return i;
 }
 private void ChangeSize(int newSize)
 {
     Intersection[] tab = new Intersection[newSize];
     for (int i = 0; i < m_size && i < newSize; i++)
     {
         tab[i] = m_data[i];
     }
     m_data = tab;
 }
 public void Insert(Intersection item)
 {
     if (m_size >= m_data.Length)
     {
         ChangeSize(m_size * 2);
     }
     m_size++;
     if (m_size > m_maxSize)
         m_maxSize = m_size;
     int i = m_size - 1;
     while (i > 0 && m_data[(i - 1) / 2].CompareTo(item) > 0)
     {
         m_data[i] = m_data[(i - 1) / 2];
         i = (i - 1) / 2;
     }
     m_data[i] = (Intersection)item.Clone();
 }