void DoStep()
        {
            switch (_state)
            {
            case State.Start:
                if (_tokenType == TokenType.Ider)
                {
                    _node = new XamlNode()
                    {
                        Name = TokenValue
                    };
                    _state = State.Name;
                }
                else
                {
                    throw new XamlException($"Invalid token type for State 'Start'. Expected: 'Ider', actual: '{_tokenType}', value: {TokenValue}");
                }
                break;

            case State.Name:
                if (_tokenType == TokenType.Ider)
                {
                    _propertyName = TokenValue;
                }
                _state = State.Equal;
                break;

            case State.Equal:
                if (_tokenType == TokenType.Equal)
                {
                    _state = State.Value;
                }
                else if (_tokenType == TokenType.RightCurly)
                {
                    _node.AddConstructorArgument(TokenValue);
                    _state = State.End;
                }
                else if (_tokenType == TokenType.Comma)
                {
                    // argument
                    _node.AddConstructorArgument(TokenValue);
                    _state = State.Name;
                }
                break;

            case State.Value:
                if (_tokenType == TokenType.String || _tokenType == TokenType.Ider)
                {
                    _node.AddProperty(_builder, _propertyName, TokenValue);
                }
                _state = State.Continue;
                break;

            case State.Continue:
                if (_tokenType == TokenType.Comma)
                {
                    _state = State.Name;
                }
                else
                {
                    _state = State.End;
                }
                break;
            }
        }