public virtual void ExtendWith(int tag)
 {
     BeamBestSequenceFinder.TagSeq.TagList last = info;
     info      = new BeamBestSequenceFinder.TagSeq.TagList();
     info.tag  = tag;
     info.last = last;
     size++;
 }
            public virtual int[] Tags()
            {
                int[] t = new int[Size()];
                int   i = Size() - 1;

                for (BeamBestSequenceFinder.TagSeq.TagList tl = info; tl != null; tl = tl.last)
                {
                    t[i] = tl.tag;
                    i--;
                }
                return(t);
            }
            public virtual int[] TmpTags(int count, int s)
            {
                if (tmp == null || tmp.Length < s)
                {
                    //tmp = new int[1024*128];
                    tmp = new int[s];
                }
                BeamBestSequenceFinder.TagSeq.TagList tl = info;
                int i = Size() - 1;

                while (tl != null && count >= 0)
                {
                    tmp[i] = tl.tag;
                    i--;
                    count--;
                    tl = tl.last;
                }
                return(tmp);
            }