private static Cup Initialize(IEnumerable <int> values, Dictionary <int, Cup> cache) { Cup head = null; Cup prev = null; foreach (int value in values) { var current = new Cup(value); if (head == null) { head = current; } if (prev != null) { current.AttachAfter(prev); } prev = current; if (cache != null) { cache.Add(value, current); } } if (prev != null) { head.AttachAfter(prev); } return(head); }