Stream(ArrayList data, PointOnEdgeFaceIntersection ptOnEdgeFaceInt)
        {
            data.Add(new Snoop.Data.ClassSeparator(typeof(PointOnEdgeFaceIntersection)));

            data.Add(new Snoop.Data.Object("Edge", ptOnEdgeFaceInt.GetEdgeReference()));
            data.Add(new Snoop.Data.Object("Face", ptOnEdgeFaceInt.GetFaceReference()));
            data.Add(new Snoop.Data.Bool("Orient with edge", ptOnEdgeFaceInt.OrientWithEdge));
        }
        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, PointOnEdgeFaceIntersection ptOnEdgeFaceInt)
      {
         data.Add(new Snoop.Data.ClassSeparator(typeof(PointOnEdgeFaceIntersection)));

         data.Add(new Snoop.Data.Object("Edge", ptOnEdgeFaceInt.GetEdgeReference()));
         data.Add(new Snoop.Data.Object("Face", ptOnEdgeFaceInt.GetFaceReference()));
         data.Add(new Snoop.Data.Bool("Orient with edge", ptOnEdgeFaceInt.OrientWithEdge));
      }