} // end of unmarshal method

        ///<summary>
        ///This allows for a quick display of PDU data.  The current format is unacceptable and only used for debugging.
        ///This will be modified in the future to provide a better display.  Usage:
        ///pdu.GetType().InvokeMember("reflection", System.Reflection.BindingFlags.InvokeMethod, null, pdu, new object[] { sb });
        ///where pdu is an object representing a single pdu and sb is a StringBuilder.
        ///Note: The supplied Utilities folder contains a method called 'DecodePDU' in the PDUProcessor Class that provides this functionality
        ///</summary>
        new public void reflection(StringBuilder sb)
        {
            sb.Append("<ElectronicEmissionsPdu>" + System.Environment.NewLine);
            base.reflection(sb);
            try
            {
                sb.Append("<emittingEntityID>" + System.Environment.NewLine);
                _emittingEntityID.reflection(sb);
                sb.Append("</emittingEntityID>" + System.Environment.NewLine);
                sb.Append("<eventID>" + System.Environment.NewLine);
                _eventID.reflection(sb);
                sb.Append("</eventID>" + System.Environment.NewLine);
                sb.Append("<stateUpdateIndicator type=\"byte\">" + _stateUpdateIndicator.ToString() + "</stateUpdateIndicator> " + System.Environment.NewLine);
                sb.Append("<systems type=\"byte\">" + _systems.Count.ToString() + "</systems> " + System.Environment.NewLine);
                sb.Append("<paddingForEmissionsPdu type=\"ushort\">" + _paddingForEmissionsPdu.ToString() + "</paddingForEmissionsPdu> " + System.Environment.NewLine);

                for (int idx = 0; idx < _systems.Count; idx++)
                {
                    sb.Append("<systems" + idx.ToString() + " type=\"ElectronicEmissionSystemData\">" + System.Environment.NewLine);
                    ElectronicEmissionSystemData aElectronicEmissionSystemData = (ElectronicEmissionSystemData)_systems[idx];
                    aElectronicEmissionSystemData.reflection(sb);
                    sb.Append("</systems" + idx.ToString() + ">" + System.Environment.NewLine);
                } // end of list marshalling

                sb.Append("</ElectronicEmissionsPdu>" + System.Environment.NewLine);
            } // end try
            catch (Exception e)
            {
                Trace.WriteLine(e);
                Trace.Flush();
            }
        } // end of marshal method
        } // end of marshal method

        new public void unmarshal(DataInputStream dis)
        {
            base.unmarshal(dis);

            try
            {
                _emittingEntityID.unmarshal(dis);
                _eventID.unmarshal(dis);
                _stateUpdateIndicator   = dis.readByte();
                _numberOfSystems        = dis.readByte();
                _paddingForEmissionsPdu = dis.readUshort();
                for (int idx = 0; idx < _numberOfSystems; idx++)
                {
                    ElectronicEmissionSystemData anX = new ElectronicEmissionSystemData();
                    anX.unmarshal(dis);
                    _systems.Add(anX);
                }
                ;
            } // end try
            catch (Exception e)
            {
                Trace.WriteLine(e);
                Trace.Flush();
            }
        } // end of unmarshal method
        /**
         * Compares for reference equality and value equality.
         */
        public bool equals(ElectronicEmissionSystemData rhs)
        {
            bool ivarsEqual = true;

            if (rhs.GetType() != this.GetType())
            {
                return(false);
            }


            if (!(_systemDataLength == rhs._systemDataLength))
            {
                ivarsEqual = false;
            }
            if (!(_numberOfBeams == rhs._numberOfBeams))
            {
                ivarsEqual = false;
            }
            if (!(_emissionsPadding2 == rhs._emissionsPadding2))
            {
                ivarsEqual = false;
            }
            if (!(_emitterSystem.Equals(rhs._emitterSystem)))
            {
                ivarsEqual = false;
            }
            if (!(_location.Equals(rhs._location)))
            {
                ivarsEqual = false;
            }

            if (!(_beamDataRecords.Count == rhs._beamDataRecords.Count))
            {
                ivarsEqual = false;
            }
            if (ivarsEqual)
            {
                for (int idx = 0; idx < _beamDataRecords.Count; idx++)
                {
                    if (!(_beamDataRecords[idx].Equals(rhs._beamDataRecords[idx])))
                    {
                        ivarsEqual = false;
                    }
                }
            }


            return(ivarsEqual);
        }
        new public int getMarshalledSize()
        {
            int marshalSize = 0;

            marshalSize = base.getMarshalledSize();
            marshalSize = marshalSize + _emittingEntityID.getMarshalledSize(); // _emittingEntityID
            marshalSize = marshalSize + _eventID.getMarshalledSize();          // _eventID
            marshalSize = marshalSize + 1;                                     // _stateUpdateIndicator
            marshalSize = marshalSize + 1;                                     // _numberOfSystems
            marshalSize = marshalSize + 2;                                     // _paddingForEmissionsPdu
            for (int idx = 0; idx < _systems.Count; idx++)
            {
                ElectronicEmissionSystemData listElement = (ElectronicEmissionSystemData)_systems[idx];
                marshalSize = marshalSize + listElement.getMarshalledSize();
            }

            return(marshalSize);
        }
        /**
         * The equals method doesn't always work--mostly on on classes that consist only of primitives. Be careful.
         */
        public bool equals(ElectronicEmissionsPdu rhs)
        {
            bool ivarsEqual = true;

            if (rhs.GetType() != this.GetType())
            {
                return(false);
            }

            if (!(_emittingEntityID.Equals(rhs._emittingEntityID)))
            {
                ivarsEqual = false;
            }
            if (!(_eventID.Equals(rhs._eventID)))
            {
                ivarsEqual = false;
            }
            if (!(_stateUpdateIndicator == rhs._stateUpdateIndicator))
            {
                ivarsEqual = false;
            }
            if (!(_numberOfSystems == rhs._numberOfSystems))
            {
                ivarsEqual = false;
            }
            if (!(_paddingForEmissionsPdu == rhs._paddingForEmissionsPdu))
            {
                ivarsEqual = false;
            }

            for (int idx = 0; idx < _systems.Count; idx++)
            {
                ElectronicEmissionSystemData x = (ElectronicEmissionSystemData)_systems[idx];
                if (!(_systems[idx].Equals(rhs._systems[idx])))
                {
                    ivarsEqual = false;
                }
            }


            return(ivarsEqual);
        }
///<summary>
///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
///</summary>
        new public void marshal(DataOutputStream dos)
        {
            base.marshal(dos);
            try
            {
                _emittingEntityID.marshal(dos);
                _eventID.marshal(dos);
                dos.writeByte((byte)_stateUpdateIndicator);
                dos.writeByte((byte)_systems.Count);
                dos.writeUshort((ushort)_paddingForEmissionsPdu);

                for (int idx = 0; idx < _systems.Count; idx++)
                {
                    ElectronicEmissionSystemData aElectronicEmissionSystemData = (ElectronicEmissionSystemData)_systems[idx];
                    aElectronicEmissionSystemData.marshal(dos);
                } // end of list marshalling
            }     // end try
            catch (Exception e)
            {
                Trace.WriteLine(e);
                Trace.Flush();
            }
        } // end of marshal method
        /**
         * Compares for reference equality and value equality.
         */
        public bool equals(ElectronicEmissionSystemData rhs)
        {
            bool ivarsEqual = true;

            if(rhs.GetType() != this.GetType())
                return false;

            if( ! (_systemDataLength == rhs._systemDataLength)) ivarsEqual = false;
            if( ! (_numberOfBeams == rhs._numberOfBeams)) ivarsEqual = false;
            if( ! (_emissionsPadding2 == rhs._emissionsPadding2)) ivarsEqual = false;
            if( ! (_emitterSystem.Equals( rhs._emitterSystem) )) ivarsEqual = false;
            if( ! (_location.Equals( rhs._location) )) ivarsEqual = false;

            if( ! (_beamDataRecords.Count == rhs._beamDataRecords.Count)) ivarsEqual = false;
            if(ivarsEqual)
            {
                for(int idx = 0; idx < _beamDataRecords.Count; idx++)
                {
                    if( ! ( _beamDataRecords[idx].Equals(rhs._beamDataRecords[idx]))) ivarsEqual = false;
                }
            }

            return ivarsEqual;
        }
        public new void unmarshal(DataInputStream dis)
        {
            base.unmarshal(dis);

            try
            {
                _emittingEntityID.unmarshal(dis);
                _eventID.unmarshal(dis);
                _stateUpdateIndicator = dis.readByte();
                _numberOfSystems = dis.readByte();
                _paddingForEmissionsPdu = dis.readUshort();
                for(int idx = 0; idx < _numberOfSystems; idx++)
                {
                    ElectronicEmissionSystemData anX = new ElectronicEmissionSystemData();
                    anX.unmarshal(dis);
                    _systems.Add(anX);
                };

            } // end try
            catch(Exception e)
            {
                Trace.WriteLine(e);
                Trace.Flush();
            }
        }