Simple class to package up EventArgs for any Snoop Collector Extensions.
Inheritance: System.EventArgs
        protected override void CollectEvent(object sender, CollectorEventArgs e)
        {
            // cast the sender object to the SnoopCollector we are expecting
             Collector snoopCollector = sender as Collector;
             if (snoopCollector == null)
             {
            Debug.Assert(false);    // why did someone else send us the message?
            return;
             }

             // see if it is a type we are responsible for
             ElementType sym = e.ObjToSnoop as ElementType;
             if (sym != null)
             {
            Stream(snoopCollector.Data(), sym);
            return;
             }

             RebarShapeDefinition rebarShapeDef = e.ObjToSnoop as RebarShapeDefinition;
             if (rebarShapeDef != null)
             {
            Stream(snoopCollector.Data(), rebarShapeDef);
            return;
             }
        }
        protected override void CollectEvent(object sender, CollectorEventArgs e)
        {
            // cast the sender object to the SnoopCollector we are expecting
             Collector snoopCollector = sender as Collector;
             if (snoopCollector == null)
             {
            Debug.Assert(false);    // why did someone else send us the message?
            return;
             }

             // see if it is a type we are responsible for
             Connector connector = e.ObjToSnoop as Connector;
             if (connector != null)
             {
            Utils.StreamWithReflection(snoopCollector.Data(), typeof(Connector), connector);
            return;
             }

             ConnectorManager connectorMgr = e.ObjToSnoop as ConnectorManager;
             if (connectorMgr != null)
             {
            Stream(snoopCollector.Data(), connectorMgr);
            return;
             }

             CorrectionFactor correctionFactor = e.ObjToSnoop as CorrectionFactor;
             if (correctionFactor != null)
             {
            Stream(snoopCollector.Data(), correctionFactor);
            return;
             }

             ElectricalSetting elecSetting = e.ObjToSnoop as ElectricalSetting;
             if (elecSetting != null)
             {
            Stream(snoopCollector.Data(), elecSetting);
            return;
             }

             GroundConductorSize groundConductorSize = e.ObjToSnoop as GroundConductorSize;
             if (groundConductorSize != null)
             {
            Stream(snoopCollector.Data(), groundConductorSize);
            return;
             }

             MEPModel mepModel = e.ObjToSnoop as MEPModel;
             if (mepModel != null)
             {
            Stream(snoopCollector.Data(), mepModel);
            return;
             }

             WireSize wireSize = e.ObjToSnoop as WireSize;
             if (wireSize != null)
             {
            Stream(snoopCollector.Data(), wireSize);
            return;
             }
        }
        protected override void CollectEvent(object sender, CollectorEventArgs e)
        {
            // cast the sender object to the SnoopCollector we are expecting
            Collector snoopCollector = sender as Collector;
            if (snoopCollector == null) {
                Debug.Assert(false);    // why did someone else send us the message?
                return;
            }

            Application app = e.ObjToSnoop as Application;
            if (app != null) {
                Stream(snoopCollector.Data(), app);
                return;
            }

            FamilyInstanceCreationData famInstData = e.ObjToSnoop as FamilyInstanceCreationData;
            if (famInstData != null) {
                Stream(snoopCollector.Data(), famInstData);
                return;
            }

            ItemFactoryBase itemFactBase = e.ObjToSnoop as ItemFactoryBase;
            if (itemFactBase != null) {
                Stream(snoopCollector.Data(), itemFactBase);
                return;
            }
        }
        protected override void CollectEvent(object sender, CollectorEventArgs e)
        {
            // cast the sender object to the SnoopCollector we are expecting
            Collector snoopCollector = sender as Collector;
            if (snoopCollector == null) {
                Debug.Assert(false);    // why did someone else send us the message?
                return;
            }

                // see if it is a type we are responsible for
            City city = e.ObjToSnoop as City;
            if (city != null) {
                Stream(snoopCollector.Data(), city);
                return;
            }

            ProjectLocation projLoc = e.ObjToSnoop as ProjectLocation;
            if (projLoc != null) {
                Stream(snoopCollector.Data(), projLoc);
                return;
            }

            ProjectPosition projPos = e.ObjToSnoop as ProjectPosition;
            if (projPos != null) {
                Stream(snoopCollector.Data(), projPos);
                return;
            }

            SiteLocation siteLoc = e.ObjToSnoop as SiteLocation;
            if (siteLoc != null) {
                Stream(snoopCollector.Data(), siteLoc);
                return;
            }
        }
        protected override void CollectEvent(object sender, CollectorEventArgs e)
        {
            // cast the sender object to the SnoopCollector we are expecting
            Collector snoopCollector = sender as Collector;
            if (snoopCollector == null)
            {
                Debug.Assert(false);    // why did someone else send us the message?
                return;
            }

            // see if it is a type we are responsible for
            SlabShapeCrease slabCrease = e.ObjToSnoop as SlabShapeCrease ;
            if (slabCrease != null) {
                Stream(snoopCollector.Data(), slabCrease);
                return;
            }

            SlabShapeEditor slabEditor = e.ObjToSnoop as SlabShapeEditor;
            if (slabEditor != null) {
                Stream(snoopCollector.Data(), slabEditor);
                return;
            }

            SlabShapeVertex slabVertex = e.ObjToSnoop as SlabShapeVertex;
            if (slabVertex != null) {
                Stream(snoopCollector.Data(), slabVertex);
                return;
            }
        }
        protected override void CollectEvent(object sender, CollectorEventArgs e)
        {
            // cast the sender object to the SnoopCollector we are expecting
            Collector snoopCollector = sender as Collector;
            if (snoopCollector == null) {
                Debug.Assert(false);    // why did someone else send us the message?
                return;
            }

                // see if it is a type we are responsible for
            Parameter param = e.ObjToSnoop as Parameter;
            if (param != null) {
                Stream(snoopCollector.Data(), param);
                return;
            }

            Definition paramDef = e.ObjToSnoop as Definition;
            if (paramDef != null) {
                Stream(snoopCollector.Data(), paramDef);
                return;
            }

            DefinitionGroup defGroup = e.ObjToSnoop as DefinitionGroup;
            if (defGroup != null) {
                Stream(snoopCollector.Data(), defGroup);
                return;
            }

            DefinitionFile defFile = e.ObjToSnoop as DefinitionFile;
            if (defFile != null) {
                Stream(snoopCollector.Data(), defFile);
                return;
            }

            Binding binding = e.ObjToSnoop as Binding;
            if (binding != null) {
                Stream(snoopCollector.Data(), binding);
                return;
            }

            ElementBinding elemBind = e.ObjToSnoop as ElementBinding;
            if (elemBind != null) {
                Stream(snoopCollector.Data(), elemBind);
                return;
            }

            // no more in 2011?
            //ParameterListItem paramListItem = e.ObjToSnoop as ParameterListItem;
            //if (paramListItem != null) {
            //    Stream(snoopCollector.Data(), paramListItem);
            //    return;
            //}
        }
        protected override void CollectEvent(object sender, CollectorEventArgs e)
        {
            // cast the sender object to the SnoopCollector we are expecting
             Collector snoopCollector = sender as Collector;
             if (snoopCollector == null)
             {
            Debug.Assert(false);    // why did someone else send us the message?
            return;
             }

             // see if it is a type we are responsible for
             Autodesk.Revit.ApplicationServices.Application app = e.ObjToSnoop as Autodesk.Revit.ApplicationServices.Application;
             if (app != null)
             {
            Stream(snoopCollector.Data(), app);
            return;
             }

             // no more app options?
             //Autodesk.Revit.Options.Application appOptions = e.ObjToSnoop as Autodesk.Revit.Options.Application;
             //if (appOptions != null) {
             //    Stream(snoopCollector.Data(), appOptions);
             //    return;
             //}

             ControlledApplication contrApp = e.ObjToSnoop as Autodesk.Revit.ApplicationServices.ControlledApplication;
             if (contrApp != null)
             {
            Stream(snoopCollector.Data(), contrApp);
            return;
             }

             Autodesk.Revit.UI.ExternalCommandData extCmd = e.ObjToSnoop as Autodesk.Revit.UI.ExternalCommandData;
             if (extCmd != null)
             {
            Stream(snoopCollector.Data(), extCmd);
            return;
             }

             RibbonItem ribbonItem = e.ObjToSnoop as RibbonItem;
             if (ribbonItem != null)
             {
            Stream(snoopCollector.Data(), ribbonItem);
            return;
             }

             RibbonPanel ribbonPanel = e.ObjToSnoop as RibbonPanel;
             if (ribbonPanel != null)
             {
            Stream(snoopCollector.Data(), ribbonPanel);
            return;
             }
        }
      CollectEvent(object sender, CollectorEventArgs e)
      {
         // cast the sender object to the SnoopCollector we are expecting
         Collector snoopCollector = sender as Collector;
         if (snoopCollector == null)
         {
            Debug.Assert(false);    // why did someone else send us the message?
            return;
         }

         // see if it is a type we are responsible for
         AnalyticalModel aModel = e.ObjToSnoop as AnalyticalModel;
         if (aModel != null)
         {
            Stream(snoopCollector.Data(), aModel);
            return;
         }

         CompoundStructure compStruct = e.ObjToSnoop as CompoundStructure;
         if (compStruct != null)
         {
            Stream(snoopCollector.Data(), compStruct);
            return;
         }

         CompoundStructureLayer compStructLayer = e.ObjToSnoop as CompoundStructureLayer;
         if (compStructLayer != null)
         {
            Stream(snoopCollector.Data(), compStructLayer);
            return;
         }

         AnalyticalModelSupport supportData = e.ObjToSnoop as AnalyticalModelSupport;
         if (supportData != null)
         {
            Stream(snoopCollector.Data(), supportData);
            return;
         }

         RebarInSystem barDesc = e.ObjToSnoop as RebarInSystem;
         if (barDesc != null)
         {
            Stream(snoopCollector.Data(), barDesc);
            return;
         }
      }
        protected override void CollectEvent( object sender, CollectorEventArgs e )
        {
            // cast the sender object to the SnoopCollector we are expecting
              Collector snoopCollector = sender as Collector;
              if( snoopCollector == null )
              {
            Debug.Assert( false );    // why did someone else send us the message?
            return;
              }

              // if its not even an Element, bail early
              Element elem = e.ObjToSnoop as Element;
              if( elem != null )
            Stream( snoopCollector.Data(), elem );
              else
            return;

              // branch to all Element derived classes that we deal with
        }
        protected override void CollectEvent(object sender, CollectorEventArgs e)
        {
            // cast the sender object to the SnoopCollector we are expecting
            Collector snoopCollector = sender as Collector;
            if (snoopCollector == null) {
                Debug.Assert(false);    // why did someone else send us the message?
                return;
            }

            BoundarySegment bndSeg = e.ObjToSnoop as BoundarySegment;
            if (bndSeg != null) {
                Stream(snoopCollector.Data(), bndSeg);
                return;
            }

            BoundarySegmentArray segArray = e.ObjToSnoop as BoundarySegmentArray;    // NOTE: this is needed because BoundarySegmentArrayArray will display enumerable Snoop items
            if (segArray != null) {
                Stream(snoopCollector.Data(), segArray);
                return;
            }
        }
        protected override void CollectEvent(object sender, CollectorEventArgs e)
        {
            // cast the sender object to the SnoopCollector we are expecting
            Collector snoopCollector = sender as Collector;
            if (snoopCollector == null) {
                Debug.Assert(false);    // why did someone else send us the message?
                return;
            }

            BoundarySegment boundSeg = e.ObjToSnoop as BoundarySegment;
            if (boundSeg != null) {
                Stream(snoopCollector.Data(), boundSeg);
                return;
            }

            BoundarySegmentArray boundSegArray = e.ObjToSnoop as BoundarySegmentArray;
            if (boundSegArray != null) {
                Stream(snoopCollector.Data(), boundSegArray);
                return;
            }
        }
        protected override void CollectEvent(object sender, CollectorEventArgs e)
        {
            // cast the sender object to the SnoopCollector we are expecting
            Collector snoopCollector = sender as Collector;
            if (snoopCollector == null)
            {
                Debug.Assert(false);    // why did someone else send us the message?
                return;
            }

            // see if it is a type we are responsible for
            Location loc = e.ObjToSnoop as Location;
            if (loc != null)
            {
                Stream(snoopCollector.Data(), loc);
                return;
            }

            GeometryObject geomObj = e.ObjToSnoop as GeometryObject;
            if (geomObj != null)
            {
                Stream(snoopCollector.Data(), geomObj);
                return;
            }

            Options opts = e.ObjToSnoop as Options;
            if (opts != null)
            {
                Stream(snoopCollector.Data(), opts);
                return;
            }

            Transform trf = e.ObjToSnoop as Transform;
            if (trf != null)
            {
                Stream(snoopCollector.Data(), trf);
                return;
            }

            BoundingBoxXYZ bndBoxXyz = e.ObjToSnoop as BoundingBoxXYZ;
            if (bndBoxXyz != null)
            {
                Stream(snoopCollector.Data(), bndBoxXyz);
                return;
            }

            MeshTriangle meshTri = e.ObjToSnoop as MeshTriangle;
            if (meshTri != null)
            {
                Stream(snoopCollector.Data(), meshTri);
                return;
            }

            Reference reference = e.ObjToSnoop as Reference;
            if (reference != null)
            {
                Stream(snoopCollector.Data(), reference);
                return;
            }

            EdgeArray edgeArray = e.ObjToSnoop as EdgeArray;    // NOTE: this is needed because EdgeArrayArray will display enumerable Snoop items
            if (edgeArray != null)
            {
                Stream(snoopCollector.Data(), edgeArray);
                return;
            }

            CurveArray curveArray = e.ObjToSnoop as CurveArray;    // NOTE: this is needed because CurveArrayArray will display enumerable Snoop items
            if (curveArray != null)
            {
                Stream(snoopCollector.Data(), curveArray);
                return;
            }

            Plane plane = e.ObjToSnoop as Plane;
            if (plane != null)
            {
                Stream(snoopCollector.Data(), plane);
                return;
            }

            IntersectionResult intrResult = e.ObjToSnoop as IntersectionResult;
            if (intrResult != null)
            {
                Stream(snoopCollector.Data(), intrResult);
                return;
            }

            BoundingBoxUV bboxUV = e.ObjToSnoop as BoundingBoxUV;
            if (bboxUV != null)
            {
                Stream(snoopCollector.Data(), bboxUV);
                return;
            }

            SweepProfile sweepProf = e.ObjToSnoop as SweepProfile;
            if (sweepProf != null)
            {
                Stream(snoopCollector.Data(), sweepProf);
                return;
            }

            DimensionSegment dimSeg = e.ObjToSnoop as DimensionSegment;
            if (dimSeg != null)
            {
                Stream(snoopCollector.Data(), dimSeg);
                return;
            }

            UV uv = e.ObjToSnoop as UV;
            if (uv != null)
            {
                Stream(snoopCollector.Data(), uv);
                return;
            }
        }
      CollectEvent(object sender, CollectorEventArgs e)
      {
         // cast the sender object to the SnoopCollector we are expecting
         Collector snoopCollector = sender as Collector;
         if (snoopCollector == null)
         {
            Debug.Assert(false);    // why did someone else send us the message?
            return;
         }

         // see if it is a type we are responsible for
         Color color = e.ObjToSnoop as Color;
         if (color != null)
         {
            Stream(snoopCollector.Data(), color);
            return;
         }

         LayoutRule layoutRule = e.ObjToSnoop as LayoutRule;
         if (layoutRule != null)
         {
            Stream(snoopCollector.Data(), layoutRule);
            return;
         }

         FormatOptions formatOptions = e.ObjToSnoop as FormatOptions;
         if (formatOptions != null)
         {
            Stream(snoopCollector.Data(), formatOptions);
            return;
         }

         CurtainGrid curtainGrid = e.ObjToSnoop as CurtainGrid;
         if (curtainGrid != null)
         {
            Stream(snoopCollector.Data(), curtainGrid);
            return;
         }

         CurtainCell curtainCell = e.ObjToSnoop as CurtainCell;
         if (curtainCell != null)
         {
            Stream(snoopCollector.Data(), curtainCell);
            return;
         }

         RebarHostData rebarHostData = e.ObjToSnoop as RebarHostData;
         if (rebarHostData != null)
         {
            Stream(snoopCollector.Data(), rebarHostData);
            return;
         }

         Leader leader = e.ObjToSnoop as Leader;
         if (leader != null)
         {
            Stream(snoopCollector.Data(), leader);
            return;
         }

         AreaVolumeSettings areaSettings = e.ObjToSnoop as AreaVolumeSettings;
         if (areaSettings != null)
         {
            Stream(snoopCollector.Data(), areaSettings);
            return;
         }

         ViewSheetSetting viewSheetSetting = e.ObjToSnoop as ViewSheetSetting;
         if (viewSheetSetting != null)
         {
            Stream(snoopCollector.Data(), viewSheetSetting);
            return;
         }

         Autodesk.Revit.UI.Events.DialogBoxData dlgBoxData = e.ObjToSnoop as Autodesk.Revit.UI.Events.DialogBoxData;
         if (dlgBoxData != null)
         {
            Stream(snoopCollector.Data(), dlgBoxData);
            return;
         }

         Construction construct = e.ObjToSnoop as Construction;
         if (construct != null)
         {
            Stream(snoopCollector.Data(), construct);
            return;
         }

         FamilyElementVisibility famElemVisib = e.ObjToSnoop as FamilyElementVisibility;
         if (famElemVisib != null)
         {
            Stream(snoopCollector.Data(), famElemVisib);
            return;
         }

         FamilyManager famManager = e.ObjToSnoop as FamilyManager;
         if (famManager != null)
         {
            Stream(snoopCollector.Data(), famManager);
            return;
         }

         FamilyParameter famParam = e.ObjToSnoop as FamilyParameter;
         if (famParam != null)
         {
            Stream(snoopCollector.Data(), famParam);
            return;
         }

         FamilyType famType = e.ObjToSnoop as FamilyType;
         if (famType != null)
         {
            Stream(snoopCollector.Data(), famType);
            return;
         }

         MEPSpaceConstruction mepSpaceConstuct = e.ObjToSnoop as MEPSpaceConstruction;
         if (mepSpaceConstuct != null)
         {
            Stream(snoopCollector.Data(), mepSpaceConstuct);
            return;
         }

         BuildingSiteExportOptions bldSiteExpOptions = e.ObjToSnoop as BuildingSiteExportOptions;
         if (bldSiteExpOptions != null)
         {
            Stream(snoopCollector.Data(), bldSiteExpOptions);
            return;
         }

         DGNExportOptions dgnExpOptions = e.ObjToSnoop as DGNExportOptions;
         if (dgnExpOptions != null)
         {
            Stream(snoopCollector.Data(), dgnExpOptions);
            return;
         }

         DWFExportOptions dwfExpOptions = e.ObjToSnoop as DWFExportOptions;
         if (dwfExpOptions != null)
         {
            Stream(snoopCollector.Data(), dwfExpOptions);
            return;
         }

         DWGExportOptions dwgExpOptions = e.ObjToSnoop as DWGExportOptions;
         if (dwgExpOptions != null)
         {
            Stream(snoopCollector.Data(), dwgExpOptions);
            return;
         }

         DWGImportOptions dwgImpOptions = e.ObjToSnoop as DWGImportOptions;
         if (dwgImpOptions != null)
         {
            Stream(snoopCollector.Data(), dwgImpOptions);
            return;
         }

         FBXExportOptions fbxExpOptions = e.ObjToSnoop as FBXExportOptions;
         if (fbxExpOptions != null)
         {
            Stream(snoopCollector.Data(), fbxExpOptions);
            return;
         }

         TrussMemberInfo trussInfo = e.ObjToSnoop as TrussMemberInfo;
         if (trussInfo != null)
         {
            Stream(snoopCollector.Data(), trussInfo);
            return;
         }

         VertexIndexPair vertIndPair = e.ObjToSnoop as VertexIndexPair;
         if (vertIndPair != null)
         {
            Stream(snoopCollector.Data(), vertIndPair);
            return;
         }

         PointElementReference ptElemRef = e.ObjToSnoop as PointElementReference;
         if (ptElemRef != null)
         {
            Stream(snoopCollector.Data(), ptElemRef);
            return;
         }

         Autodesk.Revit.DB.BoundarySegment boundSeg = e.ObjToSnoop as Autodesk.Revit.DB.BoundarySegment;
         if (boundSeg != null)
         {
            Stream(snoopCollector.Data(), boundSeg);
            return;
         }

         PointLocationOnCurve ptLocOnCurve = e.ObjToSnoop as PointLocationOnCurve;
         if (ptLocOnCurve != null)
         {
            Stream(snoopCollector.Data(), ptLocOnCurve);
            return;
         }

         Entity entity = e.ObjToSnoop as Entity;
         if (entity != null)
         {
            Stream(snoopCollector.Data(), entity);
            return;
         }

         Field field = e.ObjToSnoop as Field;
         if (field != null)
         {
            Stream(snoopCollector.Data(), field);
            return;
         }

         ExtensibleStorageField storeagefield = e.ObjToSnoop as ExtensibleStorageField;
         if (storeagefield != null)
         {
            Stream(snoopCollector.Data(), storeagefield);
            return;
         }

         IList<Autodesk.Revit.DB.BoundarySegment> boundSegs = e.ObjToSnoop as
            IList<Autodesk.Revit.DB.BoundarySegment>;
         if (boundSegs != null)
         {
            Stream(snoopCollector.Data(), boundSegs);
            return;
         }

         if (e.ObjToSnoop is KeyValuePair<String, String>)
         {
            KeyValuePair<String, String> stringspair = (KeyValuePair<String, String>)e.ObjToSnoop;
            Stream(snoopCollector.Data(), stringspair);
            return;
         }

         Schema schema = e.ObjToSnoop as Schema;
         if (schema != null)
         {
            Stream(snoopCollector.Data(), schema);
            return;
         }

         ElementId elemId = e.ObjToSnoop as ElementId;
         if (elemId != null)
         {
            Stream(snoopCollector.Data(), elemId);
            return;
         }

         PlanViewRange plvr = e.ObjToSnoop as PlanViewRange;
         if (plvr != null)
         {
             Stream(snoopCollector.Data(), plvr);
             return;
         }
         //TF
         RebarConstraintsManager rbcm = e.ObjToSnoop as RebarConstraintsManager;
         if (rbcm != null)
         {
             Stream(snoopCollector.Data(), rbcm);
             return;
         }

         RebarConstrainedHandle rbch = e.ObjToSnoop as RebarConstrainedHandle;
         if (rbch != null)
         {
             Stream(snoopCollector.Data(), rbch);
             return;
         }

         RebarConstraint rbc = e.ObjToSnoop as RebarConstraint;
         if (rbc != null)
         {
             Stream(snoopCollector.Data(), rbc);
             return;
         }

         //TFEND

         if (Utils.IsSupportedType(e.ObjToSnoop) && e.ObjToSnoop != null)
            Utils.StreamWithReflection(snoopCollector.Data(), e.ObjToSnoop.GetType(), e.ObjToSnoop);
      }