ferreira is absolutely correct. has() is run-time, not compile-time. The only solutions are to break them out into their own packages, put the class first, or wrap the package in a BEGIN block (and you already have the block part).
My criteria for good software:
Does it work?
Can someone else come in, make a change, and be reasonably certain no bugs were introduced?