public static MoveDirection[] ConvertToDirections( SinglyLinkedList <Point> fullPath, bool reverse = false) { var list = fullPath.ToList(); if (reverse) { list.Reverse(); } return(list .Zip(list.Skip(1), (before, after) => Walker.ConvertOffsetToDirection(new Size(after.X - before.X, after.Y - before.Y))) .ToArray()); }