I did the following, and maybe it’s an overkill, but I think it might be better for performance. Or is copying a List not worth the while?
List<DialogueNode> reversedNodes = new List<DialogueNode>(nodes);
reversedNodes.Reverse();
foreach (var node in reversedNodes)
{
if (node.position.Contains(point)) return node;
}
return null;