public TBlock AddBlock <TBlock>(TBlock block) where TBlock : Block { CloseUnmatchedBlocks(); block.StartLine = LineNumber; while (!Tip.CanContain(block)) { Tip.Close(this); } Tip.Add(block); Tip = block; Container = block; return(block); }