```
if (node != next) {
node = node->next;
}
```
How does this work? Shouldn't this be
```
if (node != next) { node = next; }
```?
In the happy path you are not assigning(`node=next`).
It is taken care of by `node++`, which removes the loop dependency and the processor can use the full instruction level parallelism.
while (node) {
value += node->value;
next = node->next;
So it is the same thing.