public override int Write(TextWriter writer, int count, int p)
        {
            if (this.StructureType == StructureType.Union)
            {
                writer.Write("union");
                count += 5;
            }
            else
            {
                writer.Write("struct");
                count += 6;
            }

            if (this.Identifier != null)
            {
                writer.Write(' ');
                writer.Write(this.Identifier);
                count += this.Identifier.Length + 1;
            }
            else if (this.StructureDeclarationList != null)
            {
                using (var bracketWriter = new WrappingWriter(() => writer.WriteLine(" {"), () => writer.WriteLine('}')))
                {
                    count += 2;

                    foreach (var decl in this.StructureDeclarationList)
                    {
                        count = decl.Write(writer, count, p + 1);
                        writer.WriteLine(';');
                        count++;
                    }

                    writer.WriteIndentTabs(p);
                    count += p + 1;
                }
            }

            return count;
        }
        public override int Write(TextWriter writer, int count, int p)
        {
            writer.Write("enum");
            count += 4;

            if (this.Identifier != null)
            {
                writer.Write(' ');
                writer.Write(this.Identifier);
                count += this.Identifier.Length + 1;
            }
            else if (this.EnumeratorList != null)
            {
                using (var bracketWriter = new WrappingWriter(() => writer.WriteLine(" {"), () => writer.WriteLine('}')))
                {
                    count += 2;

                    bool first = true;
                    foreach (var enumerator in this.EnumeratorList)
                    {
                        if (!first)
                        {
                            writer.WriteLine(",");
                            count++;
                        }
                        else
                            first = false;

                        enumerator.Write(writer, count, p + 1);
                    }

                    writer.WriteLine();
                    writer.WriteIndentTabs(p);
                    count += p + 2;
                }
            }
            return count;
        }