Comment made by: gshayban
Android doesn't run Java bytecode, it runs Dex bytecode. The dexdump output of what your class translates to is interesting.
Neither is the JVMS interesting. Android isn't a Java Virtual Machine. We follow the JLS, but not the JVMS (how could we, when we don't run Java bytecode). As such, all appeals against it are irrelevant. We try to be compatible to the spirit of the JVMS wrt/ Dex bytecode, but if your source isn't Java, there are no guarantees.
Now, the verifiers were (and probably still are) broken, even against our (pretty bad) spec, and regrettably we aren't very consistent. In Marshmallow, for example, a lot of the code we can't correctly verify wrt/ structured locking is rejected as a VerifyError, which is not in the spirit of the JVMS. In the next release, this will be relaxed, however, and postponed to an actual check while running the code.
Regrettably there isn't anything we can do about old releases, you'll have to work around any issues. :-( I'll try to take a look at your class when I find the time.
Sounds like making a workaround in Clojure is the least of all evils.