// Check if we have ",CRLF" ==> See WWW-Authenticate header
 // As :>CRLF is preceded by any+ ==> p will be at least (start + 1)
 // p point to CR
 private static Boolean PrevNotComma(TSK_RagelState state, int p)
 {
     return (state.PE <= p) || ((char)state.Data[p-1] != ',');
 }
    /* #line 930 "./ragel/tsip_parser_header.rl" */
    public static Boolean Parse(TSK_RagelState state, ref TSIP_Message message)
    {
        int cs = 0;
        int p = state.TagStart;
        int pe = state.TagEnd;
        int eof = pe;
        byte[] data = state.Data;

        /* #line 5426 "../Parsers/TSIP_ParserHeader.cs" */
        {
        cs = tsip_machine_parser_headers_start;
        }

        /* #line 940 "./ragel/tsip_parser_header.rl" */

        /* #line 5433 "../Parsers/TSIP_ParserHeader.cs" */
        {
        sbyte _klen;
        short _trans;
        int _widec;
        byte _acts;
        sbyte _nacts;
        short _keys;

        if ( p == pe )
        goto _test_eof;
        if ( cs == 0 )
        goto _out;
        _resume:
        _widec = data[p];
        _klen = _tsip_machine_parser_headers_cond_lengths[cs];
        _keys = (short) (_tsip_machine_parser_headers_cond_offsets[cs]*2);
        if ( _klen > 0 ) {
        short _lower = _keys;
        short _mid;
        short _upper = (short) (_keys + (_klen<<1) - 2);
        while (true) {
            if ( _upper < _lower )
                break;

            _mid = (short) (_lower + (((_upper-_lower) >> 1) & ~1));
            if ( _widec < _tsip_machine_parser_headers_cond_keys[_mid] )
                _upper = (short) (_mid - 2);
            else if ( _widec > _tsip_machine_parser_headers_cond_keys[_mid+1] )
                _lower = (short) (_mid + 2);
            else {
                switch ( _tsip_machine_parser_headers_cond_spaces[_tsip_machine_parser_headers_cond_offsets[cs] + ((_mid - _keys)>>1)] ) {
        case 0: {
        _widec = (int)(65536u + (data[p] - 0u));
        if (
        /* #line 906 "./ragel/tsip_parser_header.rl" */

        PrevNotComma(state, p)
         ) _widec += 65536;
        break;
        }
        default: break;
                }
                break;
            }
        }
        }

        _keys = _tsip_machine_parser_headers_key_offsets[cs];
        _trans = (short)_tsip_machine_parser_headers_index_offsets[cs];

        _klen = _tsip_machine_parser_headers_single_lengths[cs];
        if ( _klen > 0 ) {
        short _lower = _keys;
        short _mid;
        short _upper = (short) (_keys + _klen - 1);
        while (true) {
            if ( _upper < _lower )
                break;

            _mid = (short) (_lower + ((_upper-_lower) >> 1));
            if ( _widec < _tsip_machine_parser_headers_trans_keys[_mid] )
                _upper = (short) (_mid - 1);
            else if ( _widec > _tsip_machine_parser_headers_trans_keys[_mid] )
                _lower = (short) (_mid + 1);
            else {
                _trans += (short) (_mid - _keys);
                goto _match;
            }
        }
        _keys += (short) _klen;
        _trans += (short) _klen;
        }

        _klen = _tsip_machine_parser_headers_range_lengths[cs];
        if ( _klen > 0 ) {
        short _lower = _keys;
        short _mid;
        short _upper = (short) (_keys + (_klen<<1) - 2);
        while (true) {
            if ( _upper < _lower )
                break;

            _mid = (short) (_lower + (((_upper-_lower) >> 1) & ~1));
            if ( _widec < _tsip_machine_parser_headers_trans_keys[_mid] )
                _upper = (short) (_mid - 2);
            else if ( _widec > _tsip_machine_parser_headers_trans_keys[_mid+1] )
                _lower = (short) (_mid + 2);
            else {
                _trans += (short)((_mid - _keys)>>1);
                goto _match;
            }
        }
        _trans += (short) _klen;
        }

        _match:
        _trans = (short)_tsip_machine_parser_headers_indicies[_trans];
        cs = _tsip_machine_parser_headers_trans_targs[_trans];

        if ( _tsip_machine_parser_headers_trans_actions[_trans] == 0 )
        goto _again;

        _acts = _tsip_machine_parser_headers_trans_actions[_trans];
        _nacts = _tsip_machine_parser_headers_actions[_acts++];
        while ( _nacts-- > 0 )
        {
        switch ( _tsip_machine_parser_headers_actions[_acts++] )
        {
        case 0:
        /* #line 31 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Accept NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        if(header != null)
        {
            message.AddHeader(header);
        }
        }
        break;
        case 1:
        /* #line 42 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Accept_Contact NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        if(header != null)
        {
            message.AddHeader(header);
        }
        }
        break;
        case 2:
        /* #line 53 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Accept_Encoding NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        if(header != null)
        {
            message.AddHeader(header);
        }
        }
        break;
        case 3:
        /* #line 64 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Accept_Language NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        if(header != null)
        {
            message.AddHeader(header);
        }
        }
        break;
        case 4:
        /* #line 75 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Accept_Resource_Priority NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        if(header != null)
        {
            message.AddHeader(header);
        }
        }
        break;
        case 5:
        /* #line 86 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Alert_Info NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        if(header != null)
        {
            message.AddHeader(header);
        }
        }
        break;
        case 6:
        /* #line 97 "./ragel/tsip_parser_header.rl" */
        {
        TSIP_HeaderAllow header = TSIP_HeaderAllow.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 7:
        /* #line 104 "./ragel/tsip_parser_header.rl" */
        {
        TSIP_HeaderAllowEvents header = TSIP_HeaderAllowEvents.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 8:
        /* #line 111 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Authentication_Info NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 9:
        /* #line 119 "./ragel/tsip_parser_header.rl" */
        {
        TSIP_HeaderAuthorization header = TSIP_HeaderAuthorization.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 10:
        /* #line 126 "./ragel/tsip_parser_header.rl" */
        {
        if(message.CallId == null)
        {
            message.CallId = TSIP_HeaderCallId.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        }
        else
        {
            TSK_Debug.Warn("The message already have 'Call-ID' header.");
            TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
            message.AddHeader(header);
        }
        }
        break;
        case 11:
        /* #line 141 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Call_Info NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        if(header != null)
        {
            message.AddHeader(header);
        }
        }
        break;
        case 12:
        /* #line 152 "./ragel/tsip_parser_header.rl" */
        {
        List<TSIP_HeaderContact> headers = TSIP_HeaderContact.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        if(headers != null)
        {
            message.AddHeaders(headers.ToArray());
        }
        }
        break;
        case 13:
        /* #line 162 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Content_Disposition NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        if(header != null)
        {
            message.AddHeader(header);
        }
        }
        break;
        case 14:
        /* #line 173 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Content_Encoding NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        if(header != null)
        {
            message.AddHeader(header);
        }
        }
        break;
        case 15:
        /* #line 184 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Content_Language NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        if(header != null)
        {
            message.AddHeader(header);
        }
        }
        break;
        case 16:
        /* #line 195 "./ragel/tsip_parser_header.rl" */
        {
        if(message.ContentLength == null)
        {
            message.ContentLength = TSIP_HeaderContentLength.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        }
        else
        {
            TSK_Debug.Warn("The message already have 'Content-Length' header.");
            TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
            message.AddHeader(header);
        }
        }
        break;
        case 17:
        /* #line 210 "./ragel/tsip_parser_header.rl" */
        {
        if(message.ContentType == null)
        {
            message.ContentType = TSIP_HeaderContentType.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        }
        else
        {
            TSK_Debug.Warn("The message already have 'Content-Length' header.");
            TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
            message.AddHeader(header);
        }
        }
        break;
        case 18:
        /* #line 225 "./ragel/tsip_parser_header.rl" */
        {
        if(message.CSeq == null)
        {
            message.CSeq = TSIP_HeaderCSeq.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        }
        else
        {
            TSK_Debug.Warn("The message already have 'CSeq' header.");
            TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
            message.AddHeader(header);
        }
        }
        break;
        case 19:
        /* #line 240 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Date NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 20:
        /* #line 248 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Error_Info NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 21:
        /* #line 256 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Event NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_Event_t *header = tsip_header_Event_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADER(header);
        }
        break;
        case 22:
        /* #line 266 "./ragel/tsip_parser_header.rl" */
        {
        if(message.Expires == null)
        {
            message.Expires = TSIP_HeaderExpires.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        }
        else
        {
            TSK_Debug.Warn("The message already have 'Expires' header.");
            TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
            message.AddHeader(header);
        }
        }
        break;
        case 23:
        /* #line 281 "./ragel/tsip_parser_header.rl" */
        {
        if(message.From == null)
        {
            message.From = TSIP_HeaderFrom.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        }
        else
        {
            TSK_Debug.Warn("The message already have 'From' header.");
            TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
            message.AddHeader(header);
        }
        }
        break;
        case 24:
        /* #line 296 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_History_Info NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 25:
        /* #line 304 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Identity NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 26:
        /* #line 312 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Identity_Info NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 27:
        /* #line 320 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_In_Reply_To NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 28:
        /* #line 328 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Join NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 29:
        /* #line 336 "./ragel/tsip_parser_header.rl" */
        {
        TSIP_HeaderMaxForwards header = TSIP_HeaderMaxForwards.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 30:
        /* #line 343 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_MIME_Version NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 31:
        /* #line 351 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Min_Expires NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_Min_Expires_t *header = tsip_header_Min_Expires_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADER(header);
        }
        break;
        case 32:
        /* #line 361 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Min_SE NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_Min_SE_t *header = tsip_header_Min_SE_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADER(header);
        }
        break;
        case 33:
        /* #line 371 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Organization NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 34:
        /* #line 379 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_P_Access_Network_Info NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_P_Access_Network_Info_t *header = tsip_header_P_Access_Network_Info_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADER(header);
        }
        break;
        case 35:
        /* #line 389 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_P_Answer_State NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 36:
        /* #line 397 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_P_Asserted_Identity NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_P_Asserted_Identities_L_t* headers =  tsip_header_P_Asserted_Identity_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADERS(headers);
        }
        break;
        case 37:
        /* #line 407 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_P_Associated_URI NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_P_Associated_URIs_L_t* headers =  tsip_header_P_Associated_URI_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADERS(headers);
        }
        break;
        case 38:
        /* #line 417 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_P_Called_Party_ID NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 39:
        /* #line 425 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_P_Charging_Function_Addresses NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_P_Charging_Function_Addressess_L_t* headers =  tsip_header_P_Charging_Function_Addresses_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADERS(headers);
        }
        break;
        case 40:
        /* #line 435 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_P_Charging_Vector NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 41:
        /* #line 443 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_P_DCS_Billing_Info NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 42:
        /* #line 451 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_P_DCS_LAES NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 43:
        /* #line 459 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_P_DCS_OSPS NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 44:
        /* #line 467 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_P_DCS_Redirect NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 45:
        /* #line 475 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_P_DCS_Trace_Party_ID NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 46:
        /* #line 483 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_P_Early_Media NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 47:
        /* #line 491 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_P_Media_Authorization NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 48:
        /* #line 499 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_P_Preferred_Identity NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);

        //tsip_header_P_Preferred_Identity_t *header = tsip_header_P_Preferred_Identity_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADER(header);
        }
        break;
        case 49:
        /* #line 510 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_P_Profile_Key NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 50:
        /* #line 518 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_P_User_Database NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 51:
        /* #line 526 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_P_Visited_Network_ID NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 52:
        /* #line 534 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Path NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_Paths_L_t* headers =  tsip_header_Path_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADERS(headers);
        }
        break;
        case 53:
        /* #line 544 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Priority NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 54:
        /* #line 552 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Privacy NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_Privacy_t *header = tsip_header_Privacy_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADER(header);
        }
        break;
        case 55:
        /* #line 562 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Proxy_Authenticate NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_Proxy_Authenticate_t *header = tsip_header_Proxy_Authenticate_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADER(header);
        }
        break;
        case 56:
        /* #line 572 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Proxy_Authorization NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_Proxy_Authorization_t *header = tsip_header_Proxy_Authorization_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADER(header);
        }
        break;
        case 57:
        /* #line 582 "./ragel/tsip_parser_header.rl" */
        {
        TSIP_HeaderRequire header = TSIP_HeaderRequire.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 58:
        /* #line 589 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Proxy_Authorization NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_RAck_t *header = tsip_header_RAck_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADER(header);
        }
        break;
        case 59:
        /* #line 599 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Reason NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 60:
        /* #line 607 "./ragel/tsip_parser_header.rl" */
        {
        List<TSIP_HeaderRecordRoute> headers = TSIP_HeaderRecordRoute.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        if(headers != null)
        {
            message.AddHeaders(headers.ToArray());
        }
        }
        break;
        case 61:
        /* #line 617 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Refer_Sub NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_Refer_Sub_t *header = tsip_header_Refer_Sub_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADER(header);
        }
        break;
        case 62:
        /* #line 627 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Refer_To NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_Refer_To_t *header = tsip_header_Refer_To_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADER(header);
        }
        break;
        case 63:
        /* #line 637 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Referred_By NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_Referred_By_t *header = tsip_header_Referred_By_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADER(header);
        }
        break;
        case 64:
        /* #line 647 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Reject_Contact NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 65:
        /* #line 655 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Replaces NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 66:
        /* #line 663 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Reply_To NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 67:
        /* #line 671 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Request_Disposition NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 68:
        /* #line 679 "./ragel/tsip_parser_header.rl" */
        {
        TSIP_HeaderRequire header = TSIP_HeaderRequire.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 69:
        /* #line 686 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Resource_Priority NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 70:
        /* #line 694 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Retry_After NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 71:
        /* #line 702 "./ragel/tsip_parser_header.rl" */
        {
        List<TSIP_HeaderRoute> headers = TSIP_HeaderRoute.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        if (headers != null)
        {
            message.AddHeaders(headers.ToArray());
        }
        }
        break;
        case 72:
        /* #line 712 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_RSeq NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_RSeq_t *header = tsip_header_RSeq_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADER(header);
        }
        break;
        case 73:
        /* #line 722 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Security_Client NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_Security_Clients_L_t* headers =  tsip_header_Security_Client_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADERS(headers);
        }
        break;
        case 74:
        /* #line 732 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Security_Server NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_Security_Servers_L_t* headers =  tsip_header_Security_Server_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADERS(headers);
        }
        break;
        case 75:
        /* #line 742 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Security_Verify NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_Security_Verifies_L_t* headers =  tsip_header_Security_Verify_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADERS(headers);
        }
        break;
        case 76:
        /* #line 752 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Server NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_Server_t *header = tsip_header_Server_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADER(header);
        }
        break;
        case 77:
        /* #line 762 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Service_Route NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_Service_Routes_L_t* headers =  tsip_header_Service_Route_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADERS(headers);
        }
        break;
        case 78:
        /* #line 772 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Session_Expires NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_Session_Expires_t *header = tsip_header_Session_Expires_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADER(header);
        }
        break;
        case 79:
        /* #line 782 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_SIP_ETag NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_SIP_ETag_t *header = tsip_header_SIP_ETag_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADER(header);
        }
        break;
        case 80:
        /* #line 792 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_SIP_If_Match NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_SIP_If_Match_t *header = tsip_header_SIP_If_Match_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADER(header);
        }
        break;
        case 81:
        /* #line 802 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Subject NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 82:
        /* #line 810 "./ragel/tsip_parser_header.rl" */
        {
        TSIP_HeaderSubscriptionState header = TSIP_HeaderSubscriptionState.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 83:
        /* #line 817 "./ragel/tsip_parser_header.rl" */
        {
        TSIP_HeaderSupported header = TSIP_HeaderSupported.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 84:
        /* #line 824 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Target_Dialog NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 85:
        /* #line 832 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Timestamp NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 86:
        /* #line 840 "./ragel/tsip_parser_header.rl" */
        {
         if(message.To == null)
        {
            message.To = TSIP_HeaderTo.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        }
        else
        {
            TSK_Debug.Warn("The message already have 'To' header.");
            TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
            message.AddHeader(header);
        }
        }
        break;
        case 87:
        /* #line 855 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Unsupported NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 88:
        /* #line 863 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_User_Agent NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_User_Agent_t *header = tsip_header_User_Agent_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADER(header);
        }
        break;
        case 89:
        /* #line 873 "./ragel/tsip_parser_header.rl" */
        {
        List<TSIP_HeaderVia> headers = TSIP_HeaderVia.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        if(headers != null)
        {
            message.AddHeaders(headers.ToArray());
        }
        }
        break;
        case 90:
        /* #line 883 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_Warning NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        //tsip_header_Warnings_L_t* headers =  tsip_header_Warning_parse(state->tag_start, (state->tag_end-state->tag_start));
        //ADD_HEADERS(headers);
        }
        break;
        case 91:
        /* #line 893 "./ragel/tsip_parser_header.rl" */
        {
        TSIP_HeaderWWWAuthenticate header = TSIP_HeaderWWWAuthenticate.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        case 92:
        /* #line 900 "./ragel/tsip_parser_header.rl" */
        {
        TSK_Debug.Warn("parse_header_extension_header NOT IMPLEMENTED. Will be added as Dummy header");
        TSIP_HeaderDummy header = TSIP_HeaderDummy.Parse(Encoding.UTF8.GetString(data, state.TagStart, (state.TagEnd - state.TagStart)));
        message.AddHeader(header);
        }
        break;
        /* #line 6419 "../Parsers/TSIP_ParserHeader.cs" */
        default: break;
        }
        }

        _again:
        if ( cs == 0 )
        goto _out;
        if ( ++p != pe )
        goto _resume;
        _test_eof: {}
        _out: {}
        }

        /* #line 941 "./ragel/tsip_parser_header.rl" */

        return ( cs >=
        /* #line 6436 "../Parsers/TSIP_ParserHeader.cs" */
        1398
        /* #line 942 "./ragel/tsip_parser_header.rl" */
         );
    }
    private static TSIP_Message Execute(ref TSK_RagelState state, Boolean extractContent)
    {
        int cs = state.CS;
        int p = state.P;
        int pe = state.PE;
        int eof = state.EOF;
        byte[] data = state.Data;
        TSIP_Message message = null;

        /* #line 233 "../Parsers/TSIP_ParserMessage.cs" */
        {
        sbyte _klen;
        byte _trans;
        int _widec;
        sbyte _acts;
        sbyte _nacts;
        byte _keys;

        if ( p == pe )
        goto _test_eof;
        if ( cs == 0 )
        goto _out;
        _resume:
        _widec = data[p];
        _klen = _tsip_machine_parser_message_cond_lengths[cs];
        _keys = (byte) (_tsip_machine_parser_message_cond_offsets[cs]*2);
        if ( _klen > 0 ) {
        short _lower = _keys;
        short _mid;
        short _upper = (short) (_keys + (_klen<<1) - 2);
        while (true) {
            if ( _upper < _lower )
                break;

            _mid = (short) (_lower + (((_upper-_lower) >> 1) & ~1));
            if ( _widec < _tsip_machine_parser_message_cond_keys[_mid] )
                _upper = (short) (_mid - 2);
            else if ( _widec > _tsip_machine_parser_message_cond_keys[_mid+1] )
                _lower = (short) (_mid + 2);
            else {
                switch ( _tsip_machine_parser_message_cond_spaces[_tsip_machine_parser_message_cond_offsets[cs] + ((_mid - _keys)>>1)] ) {
        case 0: {
        _widec = (int)(65536u + (data[p] - 0u));
        if (
        /* #line 29 "./ragel/tsip_parser_message.rl" */

        PrevNotComma(state, p)
         ) _widec += 65536;
        break;
        }
        default: break;
                }
                break;
            }
        }
        }

        _keys = _tsip_machine_parser_message_key_offsets[cs];
        _trans = (byte)_tsip_machine_parser_message_index_offsets[cs];

        _klen = _tsip_machine_parser_message_single_lengths[cs];
        if ( _klen > 0 ) {
        short _lower = _keys;
        short _mid;
        short _upper = (short) (_keys + _klen - 1);
        while (true) {
            if ( _upper < _lower )
                break;

            _mid = (short) (_lower + ((_upper-_lower) >> 1));
            if ( _widec < _tsip_machine_parser_message_trans_keys[_mid] )
                _upper = (short) (_mid - 1);
            else if ( _widec > _tsip_machine_parser_message_trans_keys[_mid] )
                _lower = (short) (_mid + 1);
            else {
                _trans += (byte) (_mid - _keys);
                goto _match;
            }
        }
        _keys += (byte) _klen;
        _trans += (byte) _klen;
        }

        _klen = _tsip_machine_parser_message_range_lengths[cs];
        if ( _klen > 0 ) {
        short _lower = _keys;
        short _mid;
        short _upper = (short) (_keys + (_klen<<1) - 2);
        while (true) {
            if ( _upper < _lower )
                break;

            _mid = (short) (_lower + (((_upper-_lower) >> 1) & ~1));
            if ( _widec < _tsip_machine_parser_message_trans_keys[_mid] )
                _upper = (short) (_mid - 2);
            else if ( _widec > _tsip_machine_parser_message_trans_keys[_mid+1] )
                _lower = (short) (_mid + 2);
            else {
                _trans += (byte)((_mid - _keys)>>1);
                goto _match;
            }
        }
        _trans += (byte) _klen;
        }

        _match:
        _trans = (byte)_tsip_machine_parser_message_indicies[_trans];
        cs = _tsip_machine_parser_message_trans_targs[_trans];

        if ( _tsip_machine_parser_message_trans_actions[_trans] == 0 )
        goto _again;

        _acts = _tsip_machine_parser_message_trans_actions[_trans];
        _nacts = _tsip_machine_parser_message_actions[_acts++];
        while ( _nacts-- > 0 )
        {
        switch ( _tsip_machine_parser_message_actions[_acts++] )
        {
        case 0:
        /* #line 30 "./ragel/tsip_parser_message.rl" */
        {
        state.TagStart = p;
        }
        break;
        case 1:
        /* #line 36 "./ragel/tsip_parser_message.rl" */
        {
        int len;
        state.TagEnd = p;
        len = (int)(state.TagEnd  - state.TagStart);
        String method = Encoding.UTF8.GetString(data, state.TagStart, len);
        if(message == null)
        {
            message = new TSIP_Request(method, null, null, null, null,0);
        }
        else
        {
            state.CS = tsip_machine_parser_message_error;
        }
        }
        break;
        case 2:
        /* #line 53 "./ragel/tsip_parser_message.rl" */
        {
        int len;
        state.TagEnd = p;
        len = (int)(state.TagEnd  - state.TagStart);
        if ((message as TSIP_Request).Uri == null)
        {
            (message as TSIP_Request).Uri = TSIP_ParserUri.Parse(Encoding.UTF8.GetString(state.Data, state.TagStart, len));
        }
        }
        break;
        case 3:
        /* #line 65 "./ragel/tsip_parser_message.rl" */
        {
        int len;
        state.TagEnd = p;
        len = (int)(state.TagEnd  - state.TagStart);

        if(message == null)
        {
            message = new TSIP_Response(0, null, null);
        }
        message.Version = Encoding.UTF8.GetString(state.Data, state.TagStart, len);
        }
        break;
        case 4:
        /* #line 79 "./ragel/tsip_parser_message.rl" */
        {
        int len;
        state.TagEnd = p;
        len = (int)(state.TagEnd  - state.TagStart);

        if (message == null)
        {
            message = new TSIP_Response(0, null, null);
        }

        UInt16 statusCode = 0;
        if (UInt16.TryParse(Encoding.UTF8.GetString(state.Data, state.TagStart, len), out statusCode))
        {
            (message as TSIP_Response).StatusCode = statusCode;
        }
        }
        break;
        case 5:
        /* #line 98 "./ragel/tsip_parser_message.rl" */
        {
        int len;
        state.TagEnd = p;
        len = (int)(state.TagEnd  - state.TagStart);
        (message as TSIP_Response).ReasonPhrase = Encoding.UTF8.GetString(state.Data, state.TagStart, len);
        }
        break;
        case 6:
        /* #line 107 "./ragel/tsip_parser_message.rl" */
        {
        int len;
        state.TagEnd = p;
        len = (int)(state.TagEnd  - state.TagStart);

        if(!TSIP_ParserHeader.Parse(state, ref message)){
            TSK_Debug.Error("Failed to parse header at {0}", state.TagStart);
        }
        }
        break;
        case 7:
        /* #line 119 "./ragel/tsip_parser_message.rl" */
        {
        state.CS = cs;
        state.P = p;
        state.PE = pe;
        state.EOF = eof;

        TSIP_ParserMessage.EoH(ref state, ref message, extractContent);

        cs = state.CS;
        p = state.P;
        pe = state.PE;
        eof = state.EOF;
        }
        break;
        /* #line 447 "../Parsers/TSIP_ParserMessage.cs" */
        default: break;
        }
        }

        _again:
        if ( cs == 0 )
        goto _out;
        if ( ++p != pe )
        goto _resume;
        _test_eof: {}
        _out: {}
        }

        /* #line 192 "./ragel/tsip_parser_message.rl" */

        state.CS = cs;
        state.P = p;
        state.PE = pe;
        state.EOF = eof;

        return message;
    }
    private static void Init(ref TSK_RagelState state)
    {
        int cs = 0;

        // Ragel machine initialization

        /* #line 213 "../Parsers/TSIP_ParserMessage.cs" */
        {
        cs = tsip_machine_parser_message_start;
        }

        /* #line 178 "./ragel/tsip_parser_message.rl" */

        state.CS = cs;
    }
    private static void EoH(ref TSK_RagelState state, ref TSIP_Message message, Boolean extractContent)
    {
        int cs = state.CS;
        int p = state.P;
        int pe = state.PE;
        int eof = state.EOF;

        if (extractContent && message != null)
        {
            int clen = (int)(message.ContentLength != null ? message.ContentLength.Length : 0);
            if ((p + clen) < pe && message.Content == null)
            {
                byte[] content = new byte[clen];
                Buffer.BlockCopy(state.Data, p + 1, content, 0, clen);
                message.AddContent(null, content);
                p = (p + clen);
            }
            else
            {
                p = (pe - 1);
            }
        }
    }