public override void Write(IO.EndianWriter stream)
            {
                Compiler comp = stream.Owner as Compiler;

                #region Fields
                #region Byte swap codes

                /*
                 * uint fieldBSCodesAddress = stream.PositionUnsigned;
                 * stream.Write(comp.OwnerState.Definition.FieldTypes[comp.TypeIndexArrayStart].ByteSwapCodes[0]);
                 * stream.Write((int)1); // array count
                 * foreach (Import.Field f in fieldSet.Fields)
                 * {
                 *      if (f.TypeIndex == comp.TypeIndexUselessPad) continue;
                 *      else if (f.TypeIndex == comp.TypeIndexPad || f.TypeIndex == comp.TypeIndexSkip)
                 *              stream.Write(f.ToInt());
                 *      else
                 *              foreach (int x in comp.OwnerState.Definition.FieldTypes[f.TypeIndex].ByteSwapCodes)
                 *                      if (x != 0)
                 *                              stream.Write(x);
                 * }
                 * stream.Write(comp.OwnerState.Definition.FieldTypes[comp.TypeIndexArrayEnd].ByteSwapCodes[0]);
                 */
                #endregion

                uint  fieldsAddress = stream.PositionUnsigned;
                Field temp          = new Field();
                foreach (Import.Field f in fieldSet.Fields)
                {
                    temp.Reset(f);
                    temp.Write(stream);
                }
                stream.Write(comp.TypeIndexTerminator); stream.Write((int)0); stream.Write((int)0); stream.Write((int)0);
                #endregion

                int field_set_size = fieldSet.CalculateSize(comp.OwnerState);

                stream.WritePointer(fieldsAddress);
                stream.Write((int)0);
                stream.Write((int)0);
                stream.Write((int)0);
                stream.Write(uint.MaxValue);
                stream.Write(field_set_size);
                stream.Write((int)0);
                stream.Write((int)0);
                stream.WritePointer(fieldsAddress);
                stream.Write(comp.Strings.GetNull());

                stream.Write(comp.Strings.GetNull());
                stream.Write(field_set_size);
                stream.Write((int)0);                //stream.WritePointer(fieldBSCodesAddress);
                MiscGroups.bysw.Write(stream);
                stream.Write((int)0 /*1*/);

                stream.Write((int)0);
                stream.Write((int)0);
                stream.Write((int)0);
                stream.Write((int)0);
            }