
I found a conflict between bm an etoolbox because later one redefines \@@end. It happens when it patches \enddocument command.
Code from etoolbox:
\patchcmd\enddocument
{\deadcycles}
{\let\AfterEndDocument\@firstofone
\@afterenddocumenthook
\deadcycles}
{}
{\let\etb@@end\@@end
...