protected override void OnRegistration(StackEx<SpanSyntaxNode> stack)
            {
                if (parentStack.Count > 1)
                {
                    var neighbor = parentStack.TopNode.Next;

                    while (neighbor.Value is PartialWhitespaceExpression.WhitespaceExpression && neighbor.Next != null)
                        neighbor = neighbor.Next;

                    if (neighbor != null && neighbor.Value != null)
                    {
                        parentStack.Pop ();

                        exp = neighbor.Value as TerminalSpan;

                        neighbor.Value = this;
                    }
                }
            }
            protected override void OnRegistration(StackEx<SpanSyntaxNode> stack)
            {
                if (stack.Count > 1)
                {
                    var neighbor = stack.TopNode.Next;

                    int whitespace_count = 0;

                    while (neighbor.Value is PartialWhitespaceExpression.WhitespaceExpression && neighbor.Next != null)
                    {
                        whitespace_count++;
                        neighbor = neighbor.Next;
                    }

                    if (neighbor != null && (exp = neighbor.Value as TerminalSpan) != null)
                    {
                        parentStack.Pop ();

                        for (var i = 0; i < whitespace_count; i++)
                            parentStack.Pop ();

                        neighbor.Value = this;
                    }
                }
            }
 public SubTerminal(TerminalSpan node)
 {
     this.node = node;
 }