code: public static int setAbstract(int modifier, boolean b) {
          if (b) {
              return (modifier | ABSTRACT) & 
                  (~FINAL & ~VOLATILE & ~TRANSIENT & ~NATIVE &
                   ~SYNCHRONIZED & ~STRICT);
          }
          else {
              return modifier & ~ABSTRACT & ~INTERFACE;
          }
      }
docs: When set abstract, the modifier is cleared from being final, volatile,
  transient, native, synchronized, and strictfp. When cleared from being
  abstract, the modifier is also cleared from being an interface.