pub fn insertBefore(list: *DoublyLinkedList, existing_node: *Node, new_node: *Node) void
pub fn insertBefore(list: *DoublyLinkedList, existing_node: *Node, new_node: *Node) void { new_node.next = existing_node; if (existing_node.prev) |prev_node| { // Intermediate node. new_node.prev = prev_node; prev_node.next = new_node; } else { // First element of the list. new_node.prev = null; list.first = new_node; } existing_node.prev = new_node; }