Пример #1
0
  private int getFixedAccess(int access, Modifier target) {
    target.oldAccess = access;
    int t = target.targetAccess;
    int ret = (access & ~7);

    switch (access & 7) {
      case ACC_PRIVATE:
        ret |= t;
        break;
      case 0: // default
        ret |= (t != ACC_PRIVATE ? t : 0 /* default */);
        break;
      case ACC_PROTECTED:
        ret |= (t != ACC_PRIVATE && t != 0 /* default */ ? t : ACC_PROTECTED);
        break;
      case ACC_PUBLIC:
        ret |= (t != ACC_PRIVATE && t != 0 /* default */ && t != ACC_PROTECTED ? t : ACC_PUBLIC);
        break;
      default:
        throw new RuntimeException("The f**k?");
    }

    // Clear the "final" marker on fields only if specified in control field
    if (target.changeFinal && target.desc == "") {
      if (target.markFinal) {
        ret |= ACC_FINAL;
      } else {
        ret &= ~ACC_FINAL;
      }
    }
    target.newAccess = ret;
    return ret;
  }