Stream(ArrayList data, PointOnEdgeEdgeIntersection ptOnEdgeEdgeInt)
        {
            data.Add(new Snoop.Data.ClassSeparator(typeof(PointOnEdgeEdgeIntersection)));

            data.Add(new Snoop.Data.Object("Edge 1", ptOnEdgeEdgeInt.GetEdgeReference1()));
            data.Add(new Snoop.Data.Object("Edge 2", ptOnEdgeEdgeInt.GetEdgeReference2()));
        }
        Stream(ArrayList data, PointElementReference ptElemRef)
        {
            data.Add(new Snoop.Data.ClassSeparator(typeof(PointElementReference)));

            PointOnEdge ptOnEdge = ptElemRef as PointOnEdge;

            if (ptOnEdge != null)
            {
                Stream(data, ptOnEdge);
                return;
            }

            PointOnEdgeEdgeIntersection ptOnEdgeEdgeInt = ptElemRef as PointOnEdgeEdgeIntersection;

            if (ptOnEdgeEdgeInt != null)
            {
                Stream(data, ptOnEdgeEdgeInt);
                return;
            }

            PointOnEdgeFaceIntersection ptOnEdgeFaceInt = ptElemRef as PointOnEdgeFaceIntersection;

            if (ptOnEdgeFaceInt != null)
            {
                Stream(data, ptOnEdgeFaceInt);
                return;
            }

            PointOnFace ptOnFace = ptElemRef as PointOnFace;

            if (ptOnFace != null)
            {
                Stream(data, ptOnFace);
                return;
            }

            //PointOnSketch ptOnSketch = ptElemRef as PointOnSketch;
            //if (ptOnSketch != null) {
            //    Stream(data, ptOnSketch);
            //    return;
            //}

            //PointRelativeToPoint ptRelToPt = ptElemRef as PointRelativeToPoint;
            //if (ptRelToPt != null) {
            //    Stream(data, ptRelToPt);
            //    return;
            //}
        }
      Stream(ArrayList data, PointOnEdgeEdgeIntersection ptOnEdgeEdgeInt)
      {
         data.Add(new Snoop.Data.ClassSeparator(typeof(PointOnEdgeEdgeIntersection)));

         data.Add(new Snoop.Data.Object("Edge 1", ptOnEdgeEdgeInt.GetEdgeReference1()));
         data.Add(new Snoop.Data.Object("Edge 2", ptOnEdgeEdgeInt.GetEdgeReference2()));
      }