public Position(Spark.Parser.SourceContext sourceContext, int sourceContextLength, int offset, int line, int column, Spark.Parser.PaintLink paintLink)
 {
     this.sourceContext       = sourceContext;
     this.sourceContentLength = sourceContextLength;
     this.offset    = offset;
     this.line      = line;
     this.column    = column;
     this.paintLink = paintLink;
 }
        public IEnumerable <Spark.Parser.Paint> GetPaint()
        {
            Spark.Parser.PaintLink paintLink = this.PaintLink;
            while (true)
            {
                if (paintLink == null)
                {
                    yield break;
                }
                yield return(paintLink.Paint);

                paintLink = paintLink.Next;
            }
        }
        public Position Paint <T>(Position begin, T value)
        {
            Paint <T> paint = new Paint <T> {
                Begin = begin,
                End   = this,
                Value = value
            };

            Spark.Parser.PaintLink paintLink = new Spark.Parser.PaintLink {
                Next  = this.PaintLink,
                Paint = paint
            };
            return(new Position(this.sourceContext, this.sourceContentLength, this.offset, this.line, this.column, paintLink));
        }