Reformatted and removed the anonymous function way of defining classes.
Renamed auxiliary class to ProgressState.
Removed pointless comments.
Moved NameResolver into its own module.
Added a clone method.
Drop _max_cycles since we now have the _cycle method which does what we need.
Added _validateUpTo. No need to force full validation in testing when testing possibleAt.
Created _getWalkerAt and reimplemented possibleAt accordingly.
Added a bunch of documentation.
Drop the extra function.
Move some of restartAt into a new _resetTo.
_validateUpTo and related methods now accept a negative index for the special case where the container is the root.
Added speculativelyValidate.