private TypeTransfer SeekTransfer(PositionType from, PositionType to) { TypeTransfer transfer = m_transfers.FirstOrDefault(o => o.From == from && o.To == to); if (transfer != null) { return(transfer); } transfer = new TypeTransfer(from, to); Stack <TypeTransfer> transferStack = new Stack <TypeTransfer>(); if (SeekTarget(transferStack, from, to)) { foreach (var t in transferStack) { transfer.AddTransfer(t); } } m_transfers.Add(transfer); return(transfer); }