I wouldn&#x27;t call it “abstraction”, a term that I reserve for things that hide their implementation details <i>well</i>. (Litmus test: if you use the abstraction wrong, will the error message show you any implementation details?) Rather, it&#x27;s boilerplate generation - basically a dynamic counterpart to Lisp macros.<p>Also, I see nothing wrong with the tone of the comment.