(see http://java.
(see http://java.sun.com/docs/books/jvms/second_edition/jvms-clarify.html)
If the ACC_INTERFACE flag is set, the ACC_ABSTRACT flag must also
be set (ch. 2.13.1).
A class file cannot have both its ACC_FINAL and ACC_ABSTRACT flags
set (ch. 2.8.2).
A field may have at most one of its ACC_PRIVATE, ACC_PROTECTED,
ACC_PUBLIC flags set (ch. 2.7.4).
A field may not have both its ACC_FINAL and ACC_VOLATILE flags set
(ch. 2.9.1).
If a method has its ACC_ABSTRACT flag set it must not have any of its
ACC_FINAL, ACC_NATIVE, ACC_PRIVATE, ACC_STATIC, ACC_STRICT,
or ACC_SYNCHRONIZED flags set (ch. 2.13.3.2).
All interface methods must have their ACC_ABSTRACT and
ACC_PUBLIC flags set.
Note for future reference: see this thread on ACC_SUPER and how its enforcement differs on the android vm. https://groups.google.com/forum/?hl=en#!topic/jvm-languages/jVhzvq8-ZIk