Step methods clarification

I was poking around PhysicalSystem out of curiousity and would love to understand the roles of the different Step methods and how they correspond to the different Solver components in Grasshopper.

From my understanding, Step is the method with everything turned on, i.e., momentum is present and damping hard-coded to 0.9; this is called by the main Solver component.

SimpleStep is the method to use if you want to progress one iteration at a time (compared to the 10-iteration batches that Step uses to improve convergence speed and maintain interactivity). There is also an overload for SimpleStep to change the damping value used. SimpleStep is called by the Step Solver component.

Finally, MomentumStep and SoftHardStep are called by the Bouncy Solver and Soft&Hard Solver components, respectively. Looking at the code is where I get a little confused, because I was always under the impression that the main Solver component is the momentum-less version of Bouncy Solver, but I see the same expressions for preserving momentum in both Step and MomentumStep, just that MomentumStep gives you more control over the damping and internal iterations. Is my assessment inaccurate?

On further inspection, to be more accurate, the difference between Step and MomentumStep is that Step only reduces a particle’s velocity if the resultant movement vector is in conflict with its current velocity vector, while MomentumStep reduces a particle’s velocity in every iteration. Both methods do still change a particle’s velocity, so the main Solver component is not exactly momentum-less. Would that assessment be correct?