Cleanup.  Something went wrong with the last two commits; stash markers litter the code and new functionality cited in the commit messages appears to have been covered in 3b10d3b32ecb374684f1e7b4fa36265fee4bc39 anyway.  Reverting to that previous state.