Test whether hidden API access flags are being enforced. The test is composed of
two JARs. The first (parent) defines methods and fields and the second (child)
tries to access them with reflection/JNI or link against them. Note that the
first is compiled twice - once with and once without hidden access flags.

The test then proceeds to exercise the following combinations of class loading:
(a) Both parent and child dex loaded with PathClassLoader, parent's class loader
    is the child's class loader's parent. Access flags should not be enforced as
    the parent does not belong to boot class path.
(b) Parent is appended to boot class path, child is loaded with PathClassLoader.
    In this situation child should not be able to access hidden methods/fields
    of the parent.
(c) Both parent and child are appended to boot class path. Restrictions should
    not apply as hidden APIs are accessible within the boundaries of the boot
    class path.
