This pop looks extremely dangerous to me. If you set first_node.next to null, you'll lose your reference to the rest of the list. Instead of removing the first value after the pop, you remove everything but the first value. Only the last_node won't get garbage collected.