Author: Dmitry Bronnikov (Compiler)