The old implementation would throw away old springs and create new ones.
The issue was the initialVelocity would always be set on the spring, even when the old spring was active.
The new implementation reuses old springs.
Properties like initialVelocity are only set on the initial spring.
This way, you can update an inflight spring with a new destination without resetting its velocity.