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. 22.214.171.124).
All interface methods must have their ACC_ABSTRACT and
ACC_PUBLIC flags set.