This is a smoke test of dex conversion, which checks to see that uses
of a known-null in contexts that require a specific type end up getting
converted to the type in question. When executed, this sort of code
will inevitably throw a NullPointerException, but if the opcode weren't
correct, they would instead incorrectly fail verification.

If you inspect the expected output of this test, you will see that
there are some surprising instructions in there, such as using
aget-byte for what was a boolean[] in the source code. In these cases,
the resulting output is still correct (passes verification and will
throw a NullPointerException if ever executed). However, it happens
that during translation there simply wasn't enough information to
recover the "true" original meaning at the level of actual opcode
selection.

This test compares emitted code against a known-good (via eyeballing)
version, so it is possible for this test to spuriously fail if other
aspects of conversion end up altering the output in innocuous ways.
