Btw, there was a bug in (define-decoder :utf-32) and (define-code-point-counter :utf-32)

At the beginning of that macros, the code that checks forĀ  BOM:

(case (,getter seq 0 4) ...

I suppose there must be "start"(as in utf-16 decoder/code-point-counter), not "0", in this form?

If so, that bug is in my code also.
And so, this line in "make-bom-check-form" local function of "define-ucs" macro:

(case (,,getter ,,src 0 ,',bytes :ne)

should be replaced by this line:

(case (,,getter ,,src ,,start ,',bytes :ne)