If you do the list rebuild above like I suggest, this is only one list of UnresolvedDelta type.

Change the field to be non-final, and update it when you pop the delta off.  I think you can find a way to leave the DeltaVisit on the stack during the loop and only pop it when the UnresolvedDelta variable goes null at the end.  If its still non-null (because there is another delta to process) you can just update the field and leave the stack alone.

That should also further reduce memory allocations and GC activity, because we aren't re-creating the current DeltaVisit when we need to remember another delta that needs this base information.