///<summary>
        ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
        ///</summary>
        public new void marshal(DataOutputStream dos)
        {
            base.marshal(dos);
            try
            {
               _entityID.marshal(dos);
               dos.writeByte((byte)_padding1);
               dos.writeByte((byte)_articulationParameters.Count);
               _entityLinearVelocity.marshal(dos);
               _entityLocation.marshal(dos);
               _entityOrientation.marshal(dos);
               dos.writeUint((uint)_entityAppearance);

               for(int idx = 0; idx < _articulationParameters.Count; idx++)
               {
            ArticulationParameter aArticulationParameter = (ArticulationParameter)_articulationParameters[idx];
            aArticulationParameter.marshal(dos);
               } // end of list marshalling

            } // end try
            catch(Exception e)
            {
              Trace.WriteLine(e);
              Trace.Flush();
            }
        }
        ///<summary>
        ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
        ///</summary>
        public new void marshal(DataOutputStream dos)
        {
            base.marshal(dos);
            try
            {
               _entityID.marshal(dos);
               dos.writeByte((byte)_forceId);
               dos.writeByte((byte)_articulationParameters.Count);
               _entityType.marshal(dos);
               _alternativeEntityType.marshal(dos);
               _entityLinearVelocity.marshal(dos);
               _entityLocation.marshal(dos);
               _entityOrientation.marshal(dos);
               dos.writeUint((uint)_entityAppearance);
               _deadReckoningParameters.marshal(dos);
               _marking.marshal(dos);
               dos.writeUint((uint)_capabilities);

               for(int idx = 0; idx < _articulationParameters.Count; idx++)
               {
            ArticulationParameter aArticulationParameter = (ArticulationParameter)_articulationParameters[idx];
            aArticulationParameter.marshal(dos);
               } // end of list marshalling

            } // end try
            catch(Exception e)
            {
              Trace.WriteLine(e);
              Trace.Flush();
            }
        }
        ///<summary>
        ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
        ///</summary>
        public void marshal(DataOutputStream dos)
        {
            try
            {
                dos.writeByte((byte)_systemDataLength);
                dos.writeByte((byte)_beamDataRecords.Count);
                dos.writeUshort((ushort)_emissionsPadding2);
                _emitterSystem.marshal(dos);
                _location.marshal(dos);

                for(int idx = 0; idx < _beamDataRecords.Count; idx++)
                {
                    ElectronicEmissionBeamData aElectronicEmissionBeamData = (ElectronicEmissionBeamData)_beamDataRecords[idx];
                    aElectronicEmissionBeamData.marshal(dos);
                } // end of list marshalling

            } // end try
            catch(Exception e)
            {
                Trace.WriteLine(e);
                Trace.Flush();
            }
        }
 ///<summary>
 ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
 ///</summary>
 public new void marshal(DataOutputStream dos)
 {
     base.marshal(dos);
     try
     {
        _objectID.marshal(dos);
        _referencedObjectID.marshal(dos);
        dos.writeUshort((ushort)_updateNumber);
        dos.writeByte((byte)_forceID);
        dos.writeByte((byte)_modifications);
        _objectType.marshal(dos);
        _objectLocation.marshal(dos);
        _objectOrientation.marshal(dos);
        dos.writeDouble((double)_objectAppearance);
        _requesterID.marshal(dos);
        _receivingID.marshal(dos);
        dos.writeUint((uint)_pad2);
     } // end try
     catch(Exception e)
     {
       Trace.WriteLine(e);
       Trace.Flush();
     }
 }
        ///<summary>
        ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
        ///</summary>
        public new void marshal(DataOutputStream dos)
        {
            base.marshal(dos);
            try
            {
               dos.writeByte((byte)_controlType);
               dos.writeByte((byte)_communicationsChannelType);
               _sourceEntityID.marshal(dos);
               dos.writeByte((byte)_sourceCommunicationsDeviceID);
               dos.writeByte((byte)_sourceLineID);
               dos.writeByte((byte)_transmitPriority);
               dos.writeByte((byte)_transmitLineState);
               dos.writeByte((byte)_command);
               _masterEntityID.marshal(dos);
               dos.writeUshort((ushort)_masterCommunicationsDeviceID);
               dos.writeUint((uint)_intercomParameters.Count);

               for(int idx = 0; idx < _intercomParameters.Count; idx++)
               {
            IntercomCommunicationsParameters aIntercomCommunicationsParameters = (IntercomCommunicationsParameters)_intercomParameters[idx];
            aIntercomCommunicationsParameters.marshal(dos);
               } // end of list marshalling

            } // end try
            catch(Exception e)
            {
              Trace.WriteLine(e);
              Trace.Flush();
            }
        }
        ///<summary>
        ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
        ///</summary>
        public void marshal(DataOutputStream dos)
        {
            try
            {

                for(int idx = 0; idx < _otherParameters.Length; idx++)
                {
                    dos.writeByte(_otherParameters[idx]);
                } // end of array marshaling

            } // end try
            catch(Exception e)
            {
                Trace.WriteLine(e);
                Trace.Flush();
            }
        }
 ///<summary>
 ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
 ///</summary>
 public void marshal(DataOutputStream dos)
 {
     try
     {
        dos.writeByte((byte)_layerNumber);
        dos.writeByte((byte)_layerSpecificInformaiton);
        dos.writeUshort((ushort)_length);
     } // end try
     catch(Exception e)
     {
       Trace.WriteLine(e);
       Trace.Flush();
     }
 }
        ///<summary>
        ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
        ///</summary>
        public new void marshal(DataOutputStream dos)
        {
            base.marshal(dos);
            try
            {
                _orginatingEntityID.marshal(dos);
                _recevingEntityID.marshal(dos);
                dos.writeUint((uint)_requestID);
                dos.writeByte((byte)_requiredReliabilityService);
                dos.writeByte((byte)_tranferType);
                _transferEntityID.marshal(dos);
                dos.writeByte((byte)_recordSets.Count);

                for(int idx = 0; idx < _recordSets.Count; idx++)
                {
                    RecordSet aRecordSet = (RecordSet)_recordSets[idx];
                    aRecordSet.marshal(dos);
                } // end of list marshalling

            } // end try
            catch(Exception e)
            {
                Trace.WriteLine(e);
                Trace.Flush();
            }
        }
        ///<summary>
        ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
        ///</summary>
        public new void marshal(DataOutputStream dos)
        {
            base.marshal(dos);
            try
            {
                _environmentalSimulationApplicationID.marshal(dos);
                dos.writeUshort((ushort)_fieldNumber);
                dos.writeUshort((ushort)_pduNumber);
                dos.writeUshort((ushort)_pduTotal);
                dos.writeUshort((ushort)_coordinateSystem);
                dos.writeByte((byte)_gridDataList.Count);
                dos.writeByte((byte)_constantGrid);
                _environmentType.marshal(dos);
                _orientation.marshal(dos);
                dos.writeLong((long)_sampleTime);
                dos.writeUint((uint)_totalValues);
                dos.writeByte((byte)_vectorDimension);
                dos.writeUshort((ushort)_padding1);
                dos.writeByte((byte)_padding2);

                for(int idx = 0; idx < _gridDataList.Count; idx++)
                {
                    GridAxisRecord aGridAxisRecord = (GridAxisRecord)_gridDataList[idx];
                    aGridAxisRecord.marshal(dos);
                } // end of list marshalling

            } // end try
            catch(Exception e)
            {
                Trace.WriteLine(e);
                Trace.Flush();
            }
        }
 ///<summary>
 ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
 ///</summary>
 public void marshal(DataOutputStream dos)
 {
     try
     {
        dos.writeUint((uint)_environmentType);
        dos.writeByte((byte)_length);
        dos.writeByte((byte)_index);
        dos.writeByte((byte)_padding1);
        dos.writeByte((byte)_geometry);
        dos.writeByte((byte)_padding2);
     } // end try
     catch(Exception e)
     {
       Trace.WriteLine(e);
       Trace.Flush();
     }
 }
 ///<summary>
 ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
 ///</summary>
 public void marshal(DataOutputStream dos)
 {
     try
     {
         dos.writeByte((byte)_segmentNumber);
         _segmentAppearance.marshal(dos);
         _location.marshal(dos);
         _orientation.marshal(dos);
         dos.writeUshort((ushort)_segmentLength);
         dos.writeUshort((ushort)_segmentWidth);
         dos.writeUshort((ushort)_segmentHeight);
         dos.writeUshort((ushort)_segmentDepth);
         dos.writeUint((uint)_pad1);
     } // end try
     catch(Exception e)
     {
         Trace.WriteLine(e);
         Trace.Flush();
     }
 }
 ///<summary>
 ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
 ///</summary>
 public new void marshal(DataOutputStream dos)
 {
     base.marshal(dos);
     try
     {
         _designatingEntityID.marshal(dos);
         dos.writeUshort((ushort)_codeName);
         _designatedEntityID.marshal(dos);
         dos.writeUshort((ushort)_designatorCode);
         dos.writeFloat((float)_designatorPower);
         dos.writeFloat((float)_designatorWavelength);
         _designatorSpotWrtDesignated.marshal(dos);
         _designatorSpotLocation.marshal(dos);
         dos.writeByte((byte)_deadReckoningAlgorithm);
         dos.writeUshort((ushort)_padding1);
         dos.writeByte((byte)_padding2);
         _entityLinearAcceleration.marshal(dos);
     } // end try
     catch(Exception e)
     {
         Trace.WriteLine(e);
         Trace.Flush();
     }
 }
        ///<summary>
        ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
        ///</summary>
        public new void marshal(DataOutputStream dos)
        {
            base.marshal(dos);
            try
            {
                _environementalProcessID.marshal(dos);
                _environmentType.marshal(dos);
                dos.writeByte((byte)_modelType);
                dos.writeByte((byte)_environmentStatus);
                dos.writeByte((byte)_environmentRecords.Count);
                dos.writeUshort((ushort)_sequenceNumber);

                for(int idx = 0; idx < _environmentRecords.Count; idx++)
                {
                    Environment aEnvironment = (Environment)_environmentRecords[idx];
                    aEnvironment.marshal(dos);
                } // end of list marshalling

            } // end try
            catch(Exception e)
            {
                Trace.WriteLine(e);
                Trace.Flush();
            }
        }
 ///<summary>
 ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
 ///</summary>
 public new void marshal(DataOutputStream dos)
 {
     base.marshal(dos);
     try
     {
         _entityID.marshal(dos);
         dos.writeUshort((ushort)_communicationsDeviceID);
         dos.writeUshort((ushort)_encodingScheme);
         dos.writeUshort((ushort)_tdlType);
         dos.writeUint((uint)_sampleRate);
         dos.writeUshort((ushort)_data.Length);
         dos.writeUshort((ushort)_samples);
         dos.writeByte (_data);
     } // end try
     catch(Exception e)
     {
         Trace.WriteLine(e);
         Trace.Flush();
     }
 }
 ///<summary>
 ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
 ///</summary>
 public void marshal(DataOutputStream dos)
 {
     try
     {
         dos.writeByte((byte)_systemStatus);
         dos.writeByte((byte)_alternateParameter4);
         dos.writeByte((byte)_informationLayers);
         dos.writeByte((byte)_modifier);
         dos.writeUshort((ushort)_parameter1);
         dos.writeUshort((ushort)_parameter2);
         dos.writeUshort((ushort)_parameter3);
         dos.writeUshort((ushort)_parameter4);
         dos.writeUshort((ushort)_parameter5);
         dos.writeUshort((ushort)_parameter6);
     } // end try
     catch(Exception e)
     {
         Trace.WriteLine(e);
         Trace.Flush();
     }
 }
        ///<summary>
        ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
        ///</summary>
        public new void marshal(DataOutputStream dos)
        {
            base.marshal(dos);
            try
            {
                _minefieldID.marshal(dos);
                _requestingEntityID.marshal(dos);
                dos.writeUshort((ushort)_minefieldSequenceNumbeer);
                dos.writeByte((byte)_requestID);
                dos.writeByte((byte)_pduSequenceNumber);
                dos.writeByte((byte)_numberOfPdus);
                dos.writeByte((byte)_mineLocation.Count);
                dos.writeByte((byte)_sensorTypes.Count);
                dos.writeByte((byte)_pad2);
                dos.writeUint((uint)_dataFilter);
                _mineType.marshal(dos);

                for(int idx = 0; idx < _sensorTypes.Count; idx++)
                {
                    TwoByteChunk aTwoByteChunk = (TwoByteChunk)_sensorTypes[idx];
                    aTwoByteChunk.marshal(dos);
                } // end of list marshalling

                dos.writeByte((byte)_pad3);

                for(int idx = 0; idx < _mineLocation.Count; idx++)
                {
                    Vector3Float aVector3Float = (Vector3Float)_mineLocation[idx];
                    aVector3Float.marshal(dos);
                } // end of list marshalling

            } // end try
            catch(Exception e)
            {
                Trace.WriteLine(e);
                Trace.Flush();
            }
        }
 ///<summary>
 ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
 ///</summary>
 public new void marshal(DataOutputStream dos)
 {
     base.marshal(dos);
     try
     {
        _issuingEntityID.marshal(dos);
        _collidingEntityID.marshal(dos);
        _eventID.marshal(dos);
        dos.writeByte((byte)_collisionType);
        dos.writeByte((byte)_pad);
        _velocity.marshal(dos);
        dos.writeFloat((float)_mass);
        _location.marshal(dos);
     } // end try
     catch(Exception e)
     {
       Trace.WriteLine(e);
       Trace.Flush();
     }
 }
 ///<summary>
 ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
 ///</summary>
 public void marshal(DataOutputStream dos)
 {
     try
     {
         dos.writeByte((byte)_entityKind);
         dos.writeByte((byte)_domain);
         dos.writeUshort((ushort)_country);
         dos.writeByte((byte)_category);
         dos.writeByte((byte)_nomenclatureVersion);
         dos.writeUshort((ushort)_nomenclature);
     } // end try
     catch(Exception e)
     {
         Trace.WriteLine(e);
         Trace.Flush();
     }
 }
 ///<summary>
 ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
 ///</summary>
 public new void marshal(DataOutputStream dos)
 {
     base.marshal(dos);
     try
     {
         dos.writeUshort((ushort)_dataValues.Length);
         dos.writeByte (_dataValues);
     } // end try
     catch(Exception e)
     {
         Trace.WriteLine(e);
         Trace.Flush();
     }
 }
 ///<summary>
 ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
 ///</summary>
 public new void marshal(DataOutputStream dos)
 {
     base.marshal(dos);
     try
     {
         _realWorldTime.marshal(dos);
         dos.writeByte((byte)_reason);
         dos.writeByte((byte)_frozenBehavior);
         dos.writeByte((byte)_requiredReliablityService);
         dos.writeByte((byte)_pad1);
         dos.writeUint((uint)_requestID);
     } // end try
     catch(Exception e)
     {
         Trace.WriteLine(e);
         Trace.Flush();
     }
 }
 ///<summary>
 ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
 ///</summary>
 public void marshal(DataOutputStream dos)
 {
     try
     {
         dos.writeByte((byte)_order);
     } // end try
     catch(Exception e)
     {
         Trace.WriteLine(e);
         Trace.Flush();
     }
 }
        ///<summary>
        ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
        ///</summary>
        public new void marshal(DataOutputStream dos)
        {
            base.marshal(dos);
            try
            {
                _requestingEntityID.marshal(dos);
                _servicingEntityID.marshal(dos);
                dos.writeByte((byte)_serviceTypeRequested);
                dos.writeByte((byte)_supplies.Count);
                dos.writeShort((short)_serviceRequestPadding);

                for(int idx = 0; idx < _supplies.Count; idx++)
                {
                    SupplyQuantity aSupplyQuantity = (SupplyQuantity)_supplies[idx];
                    aSupplyQuantity.marshal(dos);
                } // end of list marshalling

            } // end try
            catch(Exception e)
            {
                Trace.WriteLine(e);
                Trace.Flush();
            }
        }
        ///<summary>
        ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
        ///</summary>
        public new void marshal(DataOutputStream dos)
        {
            base.marshal(dos);
            try
            {
               _minefieldID.marshal(dos);
               _requestingEntityID.marshal(dos);
               dos.writeByte((byte)_requestID);
               dos.writeByte((byte)_missingPduSequenceNumbers.Count);

               for(int idx = 0; idx < _missingPduSequenceNumbers.Count; idx++)
               {
            EightByteChunk aEightByteChunk = (EightByteChunk)_missingPduSequenceNumbers[idx];
            aEightByteChunk.marshal(dos);
               } // end of list marshalling

            } // end try
            catch(Exception e)
            {
              Trace.WriteLine(e);
              Trace.Flush();
            }
        }
        ///<summary>
        ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
        ///</summary>
        public new void marshal(DataOutputStream dos)
        {
            base.marshal(dos);
            try
            {
                _minefieldID.marshal(dos);
                _requestingEntityID.marshal(dos);
                dos.writeByte((byte)_requestID);
                dos.writeByte((byte)_requestedPerimeterPoints.Count);
                dos.writeByte((byte)_pad2);
                dos.writeByte((byte)_sensorTypes.Count);
                dos.writeUint((uint)_dataFilter);
                _requestedMineType.marshal(dos);

                for(int idx = 0; idx < _requestedPerimeterPoints.Count; idx++)
                {
                    Point aPoint = (Point)_requestedPerimeterPoints[idx];
                    aPoint.marshal(dos);
                } // end of list marshalling

                for(int idx = 0; idx < _sensorTypes.Count; idx++)
                {
                    TwoByteChunk aTwoByteChunk = (TwoByteChunk)_sensorTypes[idx];
                    aTwoByteChunk.marshal(dos);
                } // end of list marshalling

            } // end try
            catch(Exception e)
            {
                Trace.WriteLine(e);
                Trace.Flush();
            }
        }
 ///<summary>
 ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
 ///</summary>
 public void marshal(DataOutputStream dos)
 {
     try
     {
         dos.writeUshort((ushort)_acousticName);
         dos.writeByte((byte)_function);
         dos.writeByte((byte)_acousticIdNumber);
     } // end try
     catch(Exception e)
     {
         Trace.WriteLine(e);
         Trace.Flush();
     }
 }
        ///<summary>
        ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
        ///</summary>
        public new void marshal(DataOutputStream dos)
        {
            base.marshal(dos);
            try
            {
                _radioEntityType.marshal(dos);
                dos.writeByte((byte)_transmitState);
                dos.writeByte((byte)_inputSource);
                dos.writeUshort((ushort)_padding1);
                _antennaLocation.marshal(dos);
                _relativeAntennaLocation.marshal(dos);
                dos.writeUshort((ushort)_antennaPatternType);
                dos.writeUshort((ushort)_antennaPatternList.Count);
                dos.writeUlong((ulong)_frequency);
                dos.writeFloat((float)_transmitFrequencyBandwidth);
                dos.writeFloat((float)_power);
                _modulationType.marshal(dos);
                dos.writeUshort((ushort)_cryptoSystem);
                dos.writeUshort((ushort)_cryptoKeyId);
                dos.writeByte((byte)_modulationParametersList.Count);
                dos.writeUshort((ushort)_padding2);
                dos.writeByte((byte)_padding3);

                for(int idx = 0; idx < _modulationParametersList.Count; idx++)
                {
                    Vector3Float aVector3Float = (Vector3Float)_modulationParametersList[idx];
                    aVector3Float.marshal(dos);
                } // end of list marshalling

                for(int idx = 0; idx < _antennaPatternList.Count; idx++)
                {
                    Vector3Float aVector3Float = (Vector3Float)_antennaPatternList[idx];
                    aVector3Float.marshal(dos);
                } // end of list marshalling

            } // end try
            catch(Exception e)
            {
                Trace.WriteLine(e);
                Trace.Flush();
            }
        }
        ///<summary>
        ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
        ///</summary>
        public new void marshal(DataOutputStream dos)
        {
            base.marshal(dos);
            try
            {
               dos.writeUint((uint)_requestID);
               dos.writeByte((byte)_requiredReliabilityService);
               dos.writeUshort((ushort)_pad1);
               dos.writeByte((byte)_pad2);
               dos.writeUshort((ushort)_eventType);
               dos.writeUint((uint)_time);
               dos.writeUint((uint)_recordIDs.Count);

               for(int idx = 0; idx < _recordIDs.Count; idx++)
               {
            FourByteChunk aFourByteChunk = (FourByteChunk)_recordIDs[idx];
            aFourByteChunk.marshal(dos);
               } // end of list marshalling

            } // end try
            catch(Exception e)
            {
              Trace.WriteLine(e);
              Trace.Flush();
            }
        }
        ///<summary>
        ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
        ///</summary>
        public new void marshal(DataOutputStream dos)
        {
            base.marshal(dos);
            try
            {
                _minefieldID.marshal(dos);
                dos.writeUshort((ushort)_minefieldSequence);
                dos.writeByte((byte)_forceID);
                dos.writeByte((byte)_perimeterPoints.Count);
                _minefieldType.marshal(dos);
                dos.writeUshort((ushort)_mineType.Count);
                _minefieldLocation.marshal(dos);
                _minefieldOrientation.marshal(dos);
                dos.writeUshort((ushort)_appearance);
                dos.writeUshort((ushort)_protocolMode);

                for(int idx = 0; idx < _perimeterPoints.Count; idx++)
                {
                    Point aPoint = (Point)_perimeterPoints[idx];
                    aPoint.marshal(dos);
                } // end of list marshalling

                for(int idx = 0; idx < _mineType.Count; idx++)
                {
                    EntityType aEntityType = (EntityType)_mineType[idx];
                    aEntityType.marshal(dos);
                } // end of list marshalling

            } // end try
            catch(Exception e)
            {
                Trace.WriteLine(e);
                Trace.Flush();
            }
        }
        ///<summary>
        ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
        ///</summary>
        public new void marshal(DataOutputStream dos)
        {
            base.marshal(dos);
            try
            {
               dos.writeByte((byte)_requiredReliabilityService);
               dos.writeUshort((ushort)_pad1);
               dos.writeByte((byte)_pad2);
               dos.writeUint((uint)_requestID);
               dos.writeUint((uint)_timeInterval);
               dos.writeUint((uint)_fixedDatumRecords.Count);
               dos.writeUint((uint)_variableDatumRecords.Count);

               for(int idx = 0; idx < _fixedDatumRecords.Count; idx++)
               {
            FixedDatum aFixedDatum = (FixedDatum)_fixedDatumRecords[idx];
            aFixedDatum.marshal(dos);
               } // end of list marshalling

               for(int idx = 0; idx < _variableDatumRecords.Count; idx++)
               {
            VariableDatum aVariableDatum = (VariableDatum)_variableDatumRecords[idx];
            aVariableDatum.marshal(dos);
               } // end of list marshalling

            } // end try
            catch(Exception e)
            {
              Trace.WriteLine(e);
              Trace.Flush();
            }
        }
        ///<summary>
        ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
        ///</summary>
        public new void marshal(DataOutputStream dos)
        {
            base.marshal(dos);
            try
            {
                _groupEntityID.marshal(dos);
                dos.writeByte((byte)_groupedEntityCategory);
                dos.writeByte((byte)_groupedEntityDescriptions.Count);
                dos.writeUint((uint)_pad2);
                dos.writeDouble((double)_latitude);
                dos.writeDouble((double)_longitude);

                for(int idx = 0; idx < _groupedEntityDescriptions.Count; idx++)
                {
                    VariableDatum aVariableDatum = (VariableDatum)_groupedEntityDescriptions[idx];
                    aVariableDatum.marshal(dos);
                } // end of list marshalling

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