This is largely the same as the previous version, but with changes suggested by Ilia incorperated, and a replacment of v1 patch 9 with v2 patch 3. This results in a net change of 4 lines from v1 by patch 13, with three of those being comments, and the remaining change that an assert was moved from Test.run() to Test.command