public void WriteDefinition(Stream result)
        {
            byte[] t;
            result.Write(OPEN_GROUP, 0, OPEN_GROUP.Length);
            result.Write(LIST_LEVEL, 0, LIST_LEVEL.Length);
            result.Write(LIST_LEVEL_TYPE, 0, LIST_LEVEL_TYPE.Length);
            switch (this.listType)
            {
            case LIST_TYPE_BULLET: result.Write(t = IntToByteArray(23), 0, t.Length); break;

            case LIST_TYPE_NUMBERED: result.Write(t = IntToByteArray(0), 0, t.Length); break;

            case LIST_TYPE_UPPER_LETTERS: result.Write(t = IntToByteArray(3), 0, t.Length); break;

            case LIST_TYPE_LOWER_LETTERS: result.Write(t = IntToByteArray(4), 0, t.Length); break;

            case LIST_TYPE_UPPER_ROMAN: result.Write(t = IntToByteArray(1), 0, t.Length); break;

            case LIST_TYPE_LOWER_ROMAN: result.Write(t = IntToByteArray(2), 0, t.Length); break;

            /* New types */
            case LIST_TYPE_ARABIC: result.Write(t = IntToByteArray(0), 0, t.Length); break;

            case LIST_TYPE_UPPERCASE_ROMAN_NUMERAL: result.Write(t = IntToByteArray(1), 0, t.Length); break;

            case LIST_TYPE_LOWERCASE_ROMAN_NUMERAL: result.Write(t = IntToByteArray(2), 0, t.Length); break;

            case LIST_TYPE_UPPERCASE_LETTER: result.Write(t = IntToByteArray(3), 0, t.Length); break;

            case LIST_TYPE_ORDINAL_NUMBER: result.Write(t = IntToByteArray(4), 0, t.Length); break;

            case LIST_TYPE_CARDINAL_TEXT_NUMBER: result.Write(t = IntToByteArray(5), 0, t.Length); break;

            case LIST_TYPE_ORDINAL_TEXT_NUMBER: result.Write(t = IntToByteArray(6), 0, t.Length); break;

            case LIST_TYPE_LOWERCASE_LETTER: result.Write(t = IntToByteArray(7), 0, t.Length); break;

            case LIST_TYPE_ARABIC_LEADING_ZERO: result.Write(t = IntToByteArray(22), 0, t.Length); break;

            case LIST_TYPE_NO_NUMBER: result.Write(t = IntToByteArray(255), 0, t.Length); break;

            default:        // catch all for other unsupported types
                if (this.listType >= RtfListLevel.LIST_TYPE_BASE)
                {
                    result.Write(t = IntToByteArray(this.listType - RtfListLevel.LIST_TYPE_BASE), 0, t.Length);
                }
                break;
            }

            result.Write(LIST_LEVEL_TYPE_NEW, 0, LIST_LEVEL_TYPE_NEW.Length);
            switch (this.listType)
            {
            case LIST_TYPE_BULLET: result.Write(t = IntToByteArray(23), 0, t.Length); break;

            case LIST_TYPE_NUMBERED: result.Write(t = IntToByteArray(0), 0, t.Length); break;

            case LIST_TYPE_UPPER_LETTERS: result.Write(t = IntToByteArray(3), 0, t.Length); break;

            case LIST_TYPE_LOWER_LETTERS: result.Write(t = IntToByteArray(4), 0, t.Length); break;

            case LIST_TYPE_UPPER_ROMAN: result.Write(t = IntToByteArray(1), 0, t.Length); break;

            case LIST_TYPE_LOWER_ROMAN: result.Write(t = IntToByteArray(2), 0, t.Length); break;

            /* New types */
            case LIST_TYPE_ARABIC: result.Write(t = IntToByteArray(0), 0, t.Length); break;

            case LIST_TYPE_UPPERCASE_ROMAN_NUMERAL: result.Write(t = IntToByteArray(1), 0, t.Length); break;

            case LIST_TYPE_LOWERCASE_ROMAN_NUMERAL: result.Write(t = IntToByteArray(2), 0, t.Length); break;

            case LIST_TYPE_UPPERCASE_LETTER: result.Write(t = IntToByteArray(3), 0, t.Length); break;

            case LIST_TYPE_ORDINAL_NUMBER: result.Write(t = IntToByteArray(4), 0, t.Length); break;

            case LIST_TYPE_CARDINAL_TEXT_NUMBER: result.Write(t = IntToByteArray(5), 0, t.Length); break;

            case LIST_TYPE_ORDINAL_TEXT_NUMBER: result.Write(t = IntToByteArray(6), 0, t.Length); break;

            case LIST_TYPE_LOWERCASE_LETTER: result.Write(t = IntToByteArray(7), 0, t.Length); break;

            case LIST_TYPE_ARABIC_LEADING_ZERO: result.Write(t = IntToByteArray(22), 0, t.Length); break;

            case LIST_TYPE_NO_NUMBER: result.Write(t = IntToByteArray(255), 0, t.Length); break;

            default:        // catch all for other unsupported types
                if (this.listType >= RtfListLevel.LIST_TYPE_BASE)
                {
                    result.Write(t = IntToByteArray(this.listType - RtfListLevel.LIST_TYPE_BASE), 0, t.Length);
                }
                break;
            }
            result.Write(LIST_LEVEL_ALIGNMENT, 0, LIST_LEVEL_ALIGNMENT.Length);
            result.Write(t = IntToByteArray(0), 0, t.Length);
            result.Write(LIST_LEVEL_ALIGNMENT_NEW, 0, LIST_LEVEL_ALIGNMENT_NEW.Length);
            result.Write(t = IntToByteArray(0), 0, t.Length);
            result.Write(LIST_LEVEL_FOLOW, 0, LIST_LEVEL_FOLOW.Length);
            result.Write(t = IntToByteArray(levelFollowValue), 0, t.Length);
            result.Write(LIST_LEVEL_START_AT, 0, LIST_LEVEL_START_AT.Length);
            result.Write(t = IntToByteArray(this.listStartAt), 0, t.Length);
            if (this.isTentative)
            {
                result.Write(LIST_LEVEL_TENTATIVE, 0, LIST_LEVEL_TENTATIVE.Length);
            }
            if (this.isLegal)
            {
                result.Write(LIST_LEVEL_LEGAL, 0, LIST_LEVEL_LEGAL.Length);
            }
            result.Write(LIST_LEVEL_SPACE, 0, LIST_LEVEL_SPACE.Length);
            result.Write(t = IntToByteArray(0), 0, t.Length);
            result.Write(LIST_LEVEL_INDENT, 0, LIST_LEVEL_INDENT.Length);
            result.Write(t = IntToByteArray(0), 0, t.Length);
            if (levelPicture != -1)
            {
                result.Write(LIST_LEVEL_PICTURE, 0, LIST_LEVEL_PICTURE.Length);
                result.Write(t = IntToByteArray(levelPicture), 0, t.Length);
            }

            result.Write(OPEN_GROUP, 0, OPEN_GROUP.Length); // { leveltext
            result.Write(LIST_LEVEL_TEXT, 0, LIST_LEVEL_TEXT.Length);
            result.Write(LIST_LEVEL_TEMPLATE_ID, 0, LIST_LEVEL_TEMPLATE_ID.Length);
            result.Write(t = IntToByteArray(this.templateID), 0, t.Length);

            /* NEVER seperate the LEVELTEXT elements with a return in between
             * them or it will not fuction correctly!
             */
            // TODO Needs to be rewritten to support 1-9 levels, not just simple single level
            if (this.listType != LIST_TYPE_BULLET)
            {
                result.Write(LIST_LEVEL_STYLE_NUMBERED_BEGIN, 0, LIST_LEVEL_STYLE_NUMBERED_BEGIN.Length);
                if (this.levelTextNumber < 10)
                {
                    result.Write(t = IntToByteArray(0), 0, t.Length);
                }
                result.Write(t = IntToByteArray(this.levelTextNumber), 0, t.Length);
                result.Write(LIST_LEVEL_STYLE_NUMBERED_END, 0, LIST_LEVEL_STYLE_NUMBERED_END.Length);
            }
            else
            {
                result.Write(LIST_LEVEL_STYLE_BULLETED_BEGIN, 0, LIST_LEVEL_STYLE_BULLETED_BEGIN.Length);
                this.document.FilterSpecialChar(result, this.bulletCharacter, false, false);
                result.Write(LIST_LEVEL_STYLE_BULLETED_END, 0, LIST_LEVEL_STYLE_BULLETED_END.Length);
            }
            result.Write(CLOSE_GROUP, 0, CLOSE_GROUP.Length); // } leveltext

            result.Write(OPEN_GROUP, 0, OPEN_GROUP.Length);   // { levelnumbers
            result.Write(LIST_LEVEL_NUMBERS_BEGIN, 0, LIST_LEVEL_NUMBERS_BEGIN.Length);
            if (this.listType != LIST_TYPE_BULLET)
            {
                result.Write(LIST_LEVEL_NUMBERS_NUMBERED, 0, LIST_LEVEL_NUMBERS_NUMBERED.Length);
            }
            result.Write(LIST_LEVEL_NUMBERS_END, 0, LIST_LEVEL_NUMBERS_END.Length);
            result.Write(CLOSE_GROUP, 0, CLOSE_GROUP.Length);// { levelnumbers

            // write properties now
            result.Write(RtfFontList.FONT_NUMBER, 0, RtfFontList.FONT_NUMBER.Length);
            if (this.listType != LIST_TYPE_BULLET)
            {
                result.Write(t = IntToByteArray(fontNumber.GetFontNumber()), 0, t.Length);
            }
            else
            {
                result.Write(t = IntToByteArray(fontBullet.GetFontNumber()), 0, t.Length);
            }
            result.Write(t = DocWriter.GetISOBytes("\\cf"), 0, t.Length);
            //        document.GetDocumentHeader().GetColorNumber(new RtfColor(this.document,this.GetFontNumber().GetColor()));
            result.Write(t = IntToByteArray(document.GetDocumentHeader().GetColorNumber(new RtfColor(this.document, this.GetFontNumber().Color))), 0, t.Length);

            WriteIndentation(result);
            result.Write(CLOSE_GROUP, 0, CLOSE_GROUP.Length);
            this.document.OutputDebugLinebreak(result);
        }
        public void WriteDefinition(Stream result)
        {
            byte[] t;
            result.Write(OpenGroup, 0, OpenGroup.Length);
            result.Write(_listLevel, 0, _listLevel.Length);
            result.Write(_listLevelType, 0, _listLevelType.Length);
            switch (_listType)
            {
            case LIST_TYPE_BULLET: result.Write(t = IntToByteArray(23), 0, t.Length); break;

            case LIST_TYPE_NUMBERED: result.Write(t = IntToByteArray(0), 0, t.Length); break;

            case LIST_TYPE_UPPER_LETTERS: result.Write(t = IntToByteArray(3), 0, t.Length); break;

            case LIST_TYPE_LOWER_LETTERS: result.Write(t = IntToByteArray(4), 0, t.Length); break;

            case LIST_TYPE_UPPER_ROMAN: result.Write(t = IntToByteArray(1), 0, t.Length); break;

            case LIST_TYPE_LOWER_ROMAN: result.Write(t = IntToByteArray(2), 0, t.Length); break;

            /* New types */
            case LIST_TYPE_ARABIC: result.Write(t = IntToByteArray(0), 0, t.Length); break;

            case LIST_TYPE_UPPERCASE_ROMAN_NUMERAL: result.Write(t = IntToByteArray(1), 0, t.Length); break;

            case LIST_TYPE_LOWERCASE_ROMAN_NUMERAL: result.Write(t = IntToByteArray(2), 0, t.Length); break;

            case LIST_TYPE_UPPERCASE_LETTER: result.Write(t = IntToByteArray(3), 0, t.Length); break;

            case LIST_TYPE_ORDINAL_NUMBER: result.Write(t = IntToByteArray(4), 0, t.Length); break;

            case LIST_TYPE_CARDINAL_TEXT_NUMBER: result.Write(t = IntToByteArray(5), 0, t.Length); break;

            case LIST_TYPE_ORDINAL_TEXT_NUMBER: result.Write(t = IntToByteArray(6), 0, t.Length); break;

            case LIST_TYPE_LOWERCASE_LETTER: result.Write(t = IntToByteArray(7), 0, t.Length); break;

            case LIST_TYPE_ARABIC_LEADING_ZERO: result.Write(t = IntToByteArray(22), 0, t.Length); break;

            case LIST_TYPE_NO_NUMBER: result.Write(t = IntToByteArray(255), 0, t.Length); break;

            default:        // catch all for other unsupported types
                if (_listType >= LIST_TYPE_BASE)
                {
                    result.Write(t = IntToByteArray(_listType - LIST_TYPE_BASE), 0, t.Length);
                }
                break;
            }

            result.Write(_listLevelTypeNew, 0, _listLevelTypeNew.Length);
            switch (_listType)
            {
            case LIST_TYPE_BULLET: result.Write(t = IntToByteArray(23), 0, t.Length); break;

            case LIST_TYPE_NUMBERED: result.Write(t = IntToByteArray(0), 0, t.Length); break;

            case LIST_TYPE_UPPER_LETTERS: result.Write(t = IntToByteArray(3), 0, t.Length); break;

            case LIST_TYPE_LOWER_LETTERS: result.Write(t = IntToByteArray(4), 0, t.Length); break;

            case LIST_TYPE_UPPER_ROMAN: result.Write(t = IntToByteArray(1), 0, t.Length); break;

            case LIST_TYPE_LOWER_ROMAN: result.Write(t = IntToByteArray(2), 0, t.Length); break;

            /* New types */
            case LIST_TYPE_ARABIC: result.Write(t = IntToByteArray(0), 0, t.Length); break;

            case LIST_TYPE_UPPERCASE_ROMAN_NUMERAL: result.Write(t = IntToByteArray(1), 0, t.Length); break;

            case LIST_TYPE_LOWERCASE_ROMAN_NUMERAL: result.Write(t = IntToByteArray(2), 0, t.Length); break;

            case LIST_TYPE_UPPERCASE_LETTER: result.Write(t = IntToByteArray(3), 0, t.Length); break;

            case LIST_TYPE_ORDINAL_NUMBER: result.Write(t = IntToByteArray(4), 0, t.Length); break;

            case LIST_TYPE_CARDINAL_TEXT_NUMBER: result.Write(t = IntToByteArray(5), 0, t.Length); break;

            case LIST_TYPE_ORDINAL_TEXT_NUMBER: result.Write(t = IntToByteArray(6), 0, t.Length); break;

            case LIST_TYPE_LOWERCASE_LETTER: result.Write(t = IntToByteArray(7), 0, t.Length); break;

            case LIST_TYPE_ARABIC_LEADING_ZERO: result.Write(t = IntToByteArray(22), 0, t.Length); break;

            case LIST_TYPE_NO_NUMBER: result.Write(t = IntToByteArray(255), 0, t.Length); break;

            default:        // catch all for other unsupported types
                if (_listType >= LIST_TYPE_BASE)
                {
                    result.Write(t = IntToByteArray(_listType - LIST_TYPE_BASE), 0, t.Length);
                }
                break;
            }
            result.Write(_listLevelAlignment, 0, _listLevelAlignment.Length);
            result.Write(t = IntToByteArray(0), 0, t.Length);
            result.Write(_listLevelAlignmentNew, 0, _listLevelAlignmentNew.Length);
            result.Write(t = IntToByteArray(0), 0, t.Length);
            result.Write(_listLevelFolow, 0, _listLevelFolow.Length);
            result.Write(t = IntToByteArray(_levelFollowValue), 0, t.Length);
            result.Write(_listLevelStartAt, 0, _listLevelStartAt.Length);
            result.Write(t = IntToByteArray(_listStartAt), 0, t.Length);
            if (_isTentative)
            {
                result.Write(_listLevelTentative, 0, _listLevelTentative.Length);
            }
            if (_isLegal)
            {
                result.Write(_listLevelLegal, 0, _listLevelLegal.Length);
            }
            result.Write(_listLevelSpace, 0, _listLevelSpace.Length);
            result.Write(t = IntToByteArray(0), 0, t.Length);
            result.Write(_listLevelIndent, 0, _listLevelIndent.Length);
            result.Write(t = IntToByteArray(0), 0, t.Length);
            if (_levelPicture != -1)
            {
                result.Write(_listLevelPicture, 0, _listLevelPicture.Length);
                result.Write(t = IntToByteArray(_levelPicture), 0, t.Length);
            }

            result.Write(OpenGroup, 0, OpenGroup.Length); // { leveltext
            result.Write(_listLevelText, 0, _listLevelText.Length);
            result.Write(_listLevelTemplateId, 0, _listLevelTemplateId.Length);
            result.Write(t = IntToByteArray(_templateId), 0, t.Length);

            /* NEVER seperate the LEVELTEXT elements with a return in between
             * them or it will not fuction correctly!
             */
            // TODO Needs to be rewritten to support 1-9 levels, not just simple single level
            if (_listType != LIST_TYPE_BULLET)
            {
                result.Write(_listLevelStyleNumberedBegin, 0, _listLevelStyleNumberedBegin.Length);
                if (_levelTextNumber < 10)
                {
                    result.Write(t = IntToByteArray(0), 0, t.Length);
                }
                result.Write(t = IntToByteArray(_levelTextNumber), 0, t.Length);
                result.Write(_listLevelStyleNumberedEnd, 0, _listLevelStyleNumberedEnd.Length);
            }
            else
            {
                result.Write(_listLevelStyleBulletedBegin, 0, _listLevelStyleBulletedBegin.Length);
                Document.FilterSpecialChar(result, _bulletCharacter, false, false);
                result.Write(_listLevelStyleBulletedEnd, 0, _listLevelStyleBulletedEnd.Length);
            }
            result.Write(CloseGroup, 0, CloseGroup.Length); // } leveltext

            result.Write(OpenGroup, 0, OpenGroup.Length);   // { levelnumbers
            result.Write(_listLevelNumbersBegin, 0, _listLevelNumbersBegin.Length);
            if (_listType != LIST_TYPE_BULLET)
            {
                result.Write(_listLevelNumbersNumbered, 0, _listLevelNumbersNumbered.Length);
            }
            result.Write(_listLevelNumbersEnd, 0, _listLevelNumbersEnd.Length);
            result.Write(CloseGroup, 0, CloseGroup.Length);// { levelnumbers

            // write properties now
            result.Write(RtfFontList.FontNumber, 0, RtfFontList.FontNumber.Length);
            if (_listType != LIST_TYPE_BULLET)
            {
                result.Write(t = IntToByteArray(_fontNumber.GetFontNumber()), 0, t.Length);
            }
            else
            {
                result.Write(t = IntToByteArray(_fontBullet.GetFontNumber()), 0, t.Length);
            }
            result.Write(t = DocWriter.GetIsoBytes("\\cf"), 0, t.Length);
            //        document.GetDocumentHeader().GetColorNumber(new RtfColor(this.document,this.GetFontNumber().GetColor()));
            result.Write(t = IntToByteArray(Document.GetDocumentHeader().GetColorNumber(new RtfColor(Document, GetFontNumber().Color))), 0, t.Length);

            WriteIndentation(result);
            result.Write(CloseGroup, 0, CloseGroup.Length);
            Document.OutputDebugLinebreak(result);
        }