public void PushBefore(ViRefNode1 <T> after, ViRefList1 <T> list) { if (list.Size == 0) { return; } if (after.IsAttach(list)) { return; } if (after.IsAttach() == false) { return; } ViDebuger.AssertError(after._list); ViRefList1 <T> receiveList = after._list; ViRefNode1 <T> iter = list._root._next; while (iter != list._root) { iter._list = receiveList; iter = iter._next; } ViDebuger.AssertError(receiveList != list); ViRefNode1 <T> first = list._root._next; ViRefNode1 <T> back = list._root._pre; ViRefNode1 <T> pre = after._pre; _Link(pre, first); _Link(back, after); receiveList._cnt += list.Size; list._Init(); }