Some people may notice this implementation behaves differently from some of the existing implementations, but that is mainly due to the language spec had been changed relatively recently; my implementation conforms to the latest spec. See "4.2 Integration Tests" of `README.md` for the details.