Example usage for org.eclipse.jdt.internal.compiler.classfmt ClassFileConstants AccSynchronized

List of usage examples for org.eclipse.jdt.internal.compiler.classfmt ClassFileConstants AccSynchronized

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.compiler.classfmt ClassFileConstants AccSynchronized.

Prototype

int AccSynchronized

To view the source code for org.eclipse.jdt.internal.compiler.classfmt ClassFileConstants AccSynchronized.

Click Source Link

Usage

From source file:ch.uzh.ifi.seal.changedistiller.ast.java.JavaASTHelper.java

License:Apache License

private boolean isSynchronized(int ecjModifier) {
    return (ecjModifier & ClassFileConstants.AccSynchronized) != 0;
}

From source file:com.android.tools.lint.psi.EcjPsiBuilder.java

License:Apache License

private EcjPsiModifierList toModifierList(@NonNull EcjPsiSourceElement parent, int modifiers,
        Annotation[] annotations) {
    int flags = 0;
    if ((modifiers & ClassFileConstants.AccStatic) != 0) {
        flags |= Modifier.STATIC;
    }/*from   w w  w.  ja  v  a2 s  .co m*/
    if ((modifiers & ClassFileConstants.AccFinal) != 0) {
        flags |= Modifier.FINAL;
    }
    if ((modifiers & ClassFileConstants.AccAbstract) != 0) {
        flags |= Modifier.ABSTRACT;
    }
    if ((modifiers & ClassFileConstants.AccPrivate) != 0) {
        flags |= Modifier.PRIVATE;
    }
    if ((modifiers & ClassFileConstants.AccProtected) != 0) {
        flags |= Modifier.PROTECTED;
    }
    if ((modifiers & ClassFileConstants.AccPublic) != 0) {
        flags |= Modifier.PUBLIC;
    }
    if ((modifiers & ClassFileConstants.AccSynchronized) != 0) {
        flags |= Modifier.SYNCHRONIZED;
    }
    if ((modifiers & ClassFileConstants.AccVolatile) != 0) {
        flags |= Modifier.VOLATILE;
    }
    if ((modifiers & ExtraCompilerModifiers.AccDefaultMethod) != 0) {
        flags |= EcjPsiModifierList.DEFAULT_MASK;
    }

    EcjPsiModifierList modifierList = new EcjPsiModifierList(mManager, flags);
    parent.adoptChild(modifierList);
    EcjPsiAnnotation[] psiAnnotations = toAnnotations(modifierList, annotations);
    modifierList.setAnnotations(psiAnnotations);
    return modifierList;
}

From source file:org.eclipse.ajdt.core.javaelements.CompilationUnitTools.java

License:Open Source License

public static int getModifierCode(IProgramElement elem) {
    IProgramElement.Accessibility acc = elem.getAccessibility();
    List<Modifiers> others = elem.getModifiers();
    int modifiers = 0;
    if (acc == IProgramElement.Accessibility.PUBLIC) {
        modifiers |= ClassFileConstants.AccPublic;
    } else if (acc == IProgramElement.Accessibility.PROTECTED) {
        modifiers |= ClassFileConstants.AccProtected;
    } else if (acc == IProgramElement.Accessibility.PRIVATE) {
        modifiers |= ClassFileConstants.AccPrivate;
    }/*from w  w  w .ja va  2  s .  c o  m*/

    if (others != null) {
        if (others.contains(IProgramElement.Modifiers.ABSTRACT)) {
            modifiers |= ClassFileConstants.AccAbstract;
        }
        if (others.contains(IProgramElement.Modifiers.FINAL)) {
            modifiers |= ClassFileConstants.AccFinal;
        }
        if (others.contains(IProgramElement.Modifiers.NATIVE)) {
            modifiers |= ClassFileConstants.AccNative;
        }
        if (others.contains(IProgramElement.Modifiers.STATIC)) {
            modifiers |= ClassFileConstants.AccStatic;
        }
        if (others.contains(IProgramElement.Modifiers.SYNCHRONIZED)) {
            modifiers |= ClassFileConstants.AccSynchronized;
        }
        if (others.contains(IProgramElement.Modifiers.TRANSIENT)) {
            modifiers |= ClassFileConstants.AccTransient;
        }
        if (others.contains(IProgramElement.Modifiers.VOLATILE)) {
            modifiers |= ClassFileConstants.AccVolatile;
        }
    }
    return modifiers;
}

From source file:org.eclipse.ajdt.core.javaelements.CompilationUnitTools.java

License:Open Source License

/**
 * returns the modifiers of this element as if this element were declared
 * public//from   w w w . jav a 2  s  . co m
 */
public static int getPublicModifierCode(IAspectJElementInfo info) {
    int modifiers = ClassFileConstants.AccPublic;

    List<Modifiers> others = info.getAJModifiers();
    if (others == null) {
        return modifiers;
    }
    if (others.contains(IProgramElement.Modifiers.ABSTRACT)) {
        modifiers |= ClassFileConstants.AccAbstract;
    }
    if (others.contains(IProgramElement.Modifiers.FINAL)) {
        modifiers |= ClassFileConstants.AccFinal;
    }
    if (others.contains(IProgramElement.Modifiers.NATIVE)) {
        modifiers |= ClassFileConstants.AccNative;
    }
    if (others.contains(IProgramElement.Modifiers.STATIC)) {
        modifiers |= ClassFileConstants.AccStatic;
    }
    if (others.contains(IProgramElement.Modifiers.SYNCHRONIZED)) {
        modifiers |= ClassFileConstants.AccSynchronized;
    }
    if (others.contains(IProgramElement.Modifiers.TRANSIENT)) {
        modifiers |= ClassFileConstants.AccTransient;
    }
    if (others.contains(IProgramElement.Modifiers.VOLATILE)) {
        modifiers |= ClassFileConstants.AccVolatile;
    }

    return modifiers;
}

From source file:org.eclipse.ajdt.core.javaelements.CompilationUnitTools.java

License:Open Source License

public static List<Modifiers> getModifiersFromModifierCode(int code) {
    List<Modifiers> mods = new ArrayList<Modifiers>(2);
    if ((code & ClassFileConstants.AccAbstract) != 0) {
        mods.add(IProgramElement.Modifiers.ABSTRACT);
    }/*from w ww.  ja va  2s  .  c o m*/
    if ((code & ClassFileConstants.AccFinal) != 0) {
        mods.add(IProgramElement.Modifiers.FINAL);
    }
    if ((code & ClassFileConstants.AccStatic) != 0) {
        mods.add(IProgramElement.Modifiers.STATIC);
    }
    if ((code & ClassFileConstants.AccVolatile) != 0) {
        mods.add(IProgramElement.Modifiers.VOLATILE);
    }
    if ((code & ClassFileConstants.AccTransient) != 0) {
        mods.add(IProgramElement.Modifiers.TRANSIENT);
    }
    if ((code & ClassFileConstants.AccSynchronized) != 0) {
        mods.add(IProgramElement.Modifiers.SYNCHRONIZED);
    }
    if ((code & ClassFileConstants.AccNative) != 0) {
        mods.add(IProgramElement.Modifiers.NATIVE);
    }
    return mods;
}

From source file:org.eclipse.jdt.internal.compiler.parser.Parser.java

License:Open Source License

protected void consumeToken(int type) {
    /* remember the last consumed value */
    /* try to minimize the number of build values */
    //   // clear the commentPtr of the scanner in case we read something different from a modifier
    //   switch(type) {
    //      case TokenNameabstract :
    //      case TokenNamestrictfp :
    //      case TokenNamefinal :
    //      case TokenNamenative :
    //      case TokenNameprivate :
    //      case TokenNameprotected :
    //      case TokenNamepublic :
    //      case TokenNametransient :
    //      case TokenNamevolatile :
    //      case TokenNamestatic :
    //      case TokenNamesynchronized :
    //         break;
    //      default:
    //         this.scanner.commentPtr = -1;
    //   }/*from  w w w.j  a v  a 2  s .c  o  m*/
    //System.out.println(this.scanner.toStringAction(type));
    switch (type) {
    case TokenNameIdentifier:
        pushIdentifier();
        if (this.scanner.useAssertAsAnIndentifier
                && this.lastErrorEndPositionBeforeRecovery < this.scanner.currentPosition) {
            long positions = this.identifierPositionStack[this.identifierPtr];
            if (!this.statementRecoveryActivated)
                problemReporter().useAssertAsAnIdentifier((int) (positions >>> 32), (int) positions);
        }
        if (this.scanner.useEnumAsAnIndentifier
                && this.lastErrorEndPositionBeforeRecovery < this.scanner.currentPosition) {
            long positions = this.identifierPositionStack[this.identifierPtr];
            if (!this.statementRecoveryActivated)
                problemReporter().useEnumAsAnIdentifier((int) (positions >>> 32), (int) positions);
        }
        break;
    case TokenNameinterface:
        //'class' is pushing two int (positions) on the stack ==> 'interface' needs to do it too....
        pushOnIntStack(this.scanner.currentPosition - 1);
        pushOnIntStack(this.scanner.startPosition);
        break;
    case TokenNameabstract:
        checkAndSetModifiers(ClassFileConstants.AccAbstract);
        pushOnExpressionStackLengthStack(0);
        break;
    case TokenNamestrictfp:
        checkAndSetModifiers(ClassFileConstants.AccStrictfp);
        pushOnExpressionStackLengthStack(0);
        break;
    case TokenNamefinal:
        checkAndSetModifiers(ClassFileConstants.AccFinal);
        pushOnExpressionStackLengthStack(0);
        break;
    case TokenNamenative:
        checkAndSetModifiers(ClassFileConstants.AccNative);
        pushOnExpressionStackLengthStack(0);
        break;
    case TokenNameprivate:
        checkAndSetModifiers(ClassFileConstants.AccPrivate);
        pushOnExpressionStackLengthStack(0);
        break;
    case TokenNameprotected:
        checkAndSetModifiers(ClassFileConstants.AccProtected);
        pushOnExpressionStackLengthStack(0);
        break;
    case TokenNamepublic:
        checkAndSetModifiers(ClassFileConstants.AccPublic);
        pushOnExpressionStackLengthStack(0);
        break;
    case TokenNametransient:
        checkAndSetModifiers(ClassFileConstants.AccTransient);
        pushOnExpressionStackLengthStack(0);
        break;
    case TokenNamevolatile:
        checkAndSetModifiers(ClassFileConstants.AccVolatile);
        pushOnExpressionStackLengthStack(0);
        break;
    case TokenNamestatic:
        checkAndSetModifiers(ClassFileConstants.AccStatic);
        pushOnExpressionStackLengthStack(0);
        break;
    case TokenNamesynchronized:
        this.synchronizedBlockSourceStart = this.scanner.startPosition;
        checkAndSetModifiers(ClassFileConstants.AccSynchronized);
        pushOnExpressionStackLengthStack(0);
        break;
    //==============================
    case TokenNamevoid:
        pushIdentifier(-T_void);
        pushOnIntStack(this.scanner.currentPosition - 1);
        pushOnIntStack(this.scanner.startPosition);
        break;
    //push a default dimension while void is not part of the primitive
    //declaration baseType and so takes the place of a type without getting into
    //regular type parsing that generates a dimension on this.intStack
    case TokenNameboolean:
        pushIdentifier(-T_boolean);
        pushOnIntStack(this.scanner.currentPosition - 1);
        pushOnIntStack(this.scanner.startPosition);
        break;
    case TokenNamebyte:
        pushIdentifier(-T_byte);
        pushOnIntStack(this.scanner.currentPosition - 1);
        pushOnIntStack(this.scanner.startPosition);
        break;
    case TokenNamechar:
        pushIdentifier(-T_char);
        pushOnIntStack(this.scanner.currentPosition - 1);
        pushOnIntStack(this.scanner.startPosition);
        break;
    case TokenNamedouble:
        pushIdentifier(-T_double);
        pushOnIntStack(this.scanner.currentPosition - 1);
        pushOnIntStack(this.scanner.startPosition);
        break;
    case TokenNamefloat:
        pushIdentifier(-T_float);
        pushOnIntStack(this.scanner.currentPosition - 1);
        pushOnIntStack(this.scanner.startPosition);
        break;
    case TokenNameint:
        pushIdentifier(-T_int);
        pushOnIntStack(this.scanner.currentPosition - 1);
        pushOnIntStack(this.scanner.startPosition);
        break;
    case TokenNamelong:
        pushIdentifier(-T_long);
        pushOnIntStack(this.scanner.currentPosition - 1);
        pushOnIntStack(this.scanner.startPosition);
        break;
    case TokenNameshort:
        pushIdentifier(-T_short);
        pushOnIntStack(this.scanner.currentPosition - 1);
        pushOnIntStack(this.scanner.startPosition);
        break;
    //==============================
    case TokenNameIntegerLiteral:
        pushOnExpressionStack(IntLiteral.buildIntLiteral(this.scanner.getCurrentTokenSource(),
                this.scanner.startPosition, this.scanner.currentPosition - 1));
        break;
    case TokenNameLongLiteral:
        pushOnExpressionStack(LongLiteral.buildLongLiteral(this.scanner.getCurrentTokenSource(),
                this.scanner.startPosition, this.scanner.currentPosition - 1));
        break;
    case TokenNameFloatingPointLiteral:
        pushOnExpressionStack(new FloatLiteral(this.scanner.getCurrentTokenSource(), this.scanner.startPosition,
                this.scanner.currentPosition - 1));
        break;
    case TokenNameDoubleLiteral:
        pushOnExpressionStack(new DoubleLiteral(this.scanner.getCurrentTokenSource(),
                this.scanner.startPosition, this.scanner.currentPosition - 1));
        break;
    case TokenNameCharacterLiteral:
        pushOnExpressionStack(new CharLiteral(this.scanner.getCurrentTokenSource(), this.scanner.startPosition,
                this.scanner.currentPosition - 1));
        break;
    case TokenNameStringLiteral:
        StringLiteral stringLiteral;
        if (this.recordStringLiterals && this.checkExternalizeStrings
                && this.lastPosistion < this.scanner.currentPosition && !this.statementRecoveryActivated) {
            stringLiteral = createStringLiteral(this.scanner.getCurrentTokenSourceString(),
                    this.scanner.startPosition, this.scanner.currentPosition - 1, Util.getLineNumber(
                            this.scanner.startPosition, this.scanner.lineEnds, 0, this.scanner.linePtr));
            this.compilationUnit.recordStringLiteral(stringLiteral, this.currentElement != null);
        } else {
            stringLiteral = createStringLiteral(this.scanner.getCurrentTokenSourceString(),
                    this.scanner.startPosition, this.scanner.currentPosition - 1, 0);
        }
        pushOnExpressionStack(stringLiteral);
        break;
    case TokenNamefalse:
        pushOnExpressionStack(new FalseLiteral(this.scanner.startPosition, this.scanner.currentPosition - 1));
        break;
    case TokenNametrue:
        pushOnExpressionStack(new TrueLiteral(this.scanner.startPosition, this.scanner.currentPosition - 1));
        break;
    case TokenNamenull:
        pushOnExpressionStack(new NullLiteral(this.scanner.startPosition, this.scanner.currentPosition - 1));
        break;
    //============================
    case TokenNamesuper:
    case TokenNamethis:
        this.endPosition = this.scanner.currentPosition - 1;
        pushOnIntStack(this.scanner.startPosition);
        break;
    case TokenNameassert:
    case TokenNameimport:
    case TokenNamepackage:
    case TokenNamethrow:
    case TokenNamedo:
    case TokenNameif:
    case TokenNamefor:
    case TokenNameswitch:
    case TokenNametry:
    case TokenNamewhile:
    case TokenNamebreak:
    case TokenNamecontinue:
    case TokenNamereturn:
    case TokenNamecase:
        pushOnIntStack(this.scanner.startPosition);
        break;
    case TokenNamenew:
        // https://bugs.eclipse.org/bugs/show_bug.cgi?id=40954
        resetModifiers();
        pushOnIntStack(this.scanner.startPosition);
        break;
    case TokenNameclass:
        pushOnIntStack(this.scanner.currentPosition - 1);
        pushOnIntStack(this.scanner.startPosition);
        break;
    case TokenNameenum:
        pushOnIntStack(this.scanner.currentPosition - 1);
        pushOnIntStack(this.scanner.startPosition);
        break;
    case TokenNamedefault:
        pushOnIntStack(this.scanner.startPosition);
        pushOnIntStack(this.scanner.currentPosition - 1);
        break;
    //let extra semantic action decide when to push
    case TokenNameRBRACKET:
        this.endPosition = this.scanner.startPosition;
        this.endStatementPosition = this.scanner.currentPosition - 1;
        break;
    case TokenNameLBRACE:
        this.endStatementPosition = this.scanner.currentPosition - 1;
        //$FALL-THROUGH$
    case TokenNamePLUS:
    case TokenNameMINUS:
    case TokenNameNOT:
    case TokenNameTWIDDLE:
        this.endPosition = this.scanner.startPosition;
        break;
    case TokenNamePLUS_PLUS:
    case TokenNameMINUS_MINUS:
        this.endPosition = this.scanner.startPosition;
        this.endStatementPosition = this.scanner.currentPosition - 1;
        break;
    case TokenNameRBRACE:
    case TokenNameSEMICOLON:
        this.endStatementPosition = this.scanner.currentPosition - 1;
        this.endPosition = this.scanner.startPosition - 1;
        //the item is not part of the potential futur expression/statement
        break;
    case TokenNameRPAREN:
        // in order to handle ( expression) ////// (cast)expression///// foo(x)
        this.rParenPos = this.scanner.currentPosition - 1; // position of the end of right parenthesis (in case of unicode \u0029) lex00101
        break;
    case TokenNameLPAREN:
        this.lParenPos = this.scanner.startPosition;
        break;
    case TokenNameAT:
        pushOnIntStack(this.scanner.startPosition);
        break;
    case TokenNameQUESTION:
        pushOnIntStack(this.scanner.startPosition);
        pushOnIntStack(this.scanner.currentPosition - 1);
        break;
    case TokenNameLESS:
        pushOnIntStack(this.scanner.startPosition);
        break;
    case TokenNameELLIPSIS:
        pushOnIntStack(this.scanner.currentPosition - 1);
        break;
    case TokenNameEQUAL:
        if (this.currentElement != null && this.currentElement instanceof RecoveredAnnotation) {
            RecoveredAnnotation recoveredAnnotation = (RecoveredAnnotation) this.currentElement;
            if (recoveredAnnotation.memberValuPairEqualEnd == -1) {
                recoveredAnnotation.memberValuPairEqualEnd = this.scanner.currentPosition - 1;
            }
        }
        break;
    case TokenNameMULTIPLY:
        // star end position
        pushOnIntStack(this.scanner.currentPosition - 1);
        break;
    //  case TokenNameCOMMA :
    //  case TokenNameCOLON  :
    //  case TokenNameLBRACKET  :
    //  case TokenNameDOT :
    //  case TokenNameERROR :
    //  case TokenNameEOF  :
    //  case TokenNamecase  :
    //  case TokenNamecatch  :
    //  case TokenNameelse  :
    //  case TokenNameextends  :
    //  case TokenNamefinally  :
    //  case TokenNameimplements  :
    //  case TokenNamethrows  :
    //  case TokenNameinstanceof  :
    //  case TokenNameEQUAL_EQUAL  :
    //  case TokenNameLESS_EQUAL  :
    //  case TokenNameGREATER_EQUAL  :
    //  case TokenNameNOT_EQUAL  :
    //  case TokenNameLEFT_SHIFT  :
    //  case TokenNameRIGHT_SHIFT  :
    //  case TokenNameUNSIGNED_RIGHT_SHIFT :
    //  case TokenNamePLUS_EQUAL  :
    //  case TokenNameMINUS_EQUAL  :
    //  case TokenNameMULTIPLY_EQUAL  :
    //  case TokenNameDIVIDE_EQUAL  :
    //  case TokenNameAND_EQUAL  :
    //  case TokenNameOR_EQUAL  :
    //  case TokenNameXOR_EQUAL  :
    //  case TokenNameREMAINDER_EQUAL  :
    //  case TokenNameLEFT_SHIFT_EQUAL  :
    //  case TokenNameRIGHT_SHIFT_EQUAL  :
    //  case TokenNameUNSIGNED_RIGHT_SHIFT_EQUAL  :
    //  case TokenNameOR_OR  :
    //  case TokenNameAND_AND  :
    //  case TokenNameREMAINDER :
    //  case TokenNameXOR  :
    //  case TokenNameAND  :
    //  case TokenNameMULTIPLY :
    //  case TokenNameOR  :
    //  case TokenNameDIVIDE :
    //  case TokenNameGREATER  :
    }
}

From source file:org.eclipse.objectteams.otdt.internal.core.compiler.ast.GuardPredicateDeclaration.java

License:Open Source License

public GuardPredicateDeclaration(CompilationResult compilationResult, char[] methodName, int kind,
        boolean typeIsRole, boolean isBasePredicate, int start, int end) {
    this(compilationResult, methodName, isBasePredicate, start, end);
    this.kind = kind;
    this.modifiers = ClassFileConstants.AccSynchronized | ClassFileConstants.AccProtected;
    if (isBasePredicate && (typeIsRole || kind != GuardPredicateDeclaration.TYPE_PREDICATE))
        this.modifiers |= ClassFileConstants.AccStatic;
}

From source file:spoon.support.builder.JDTTreeBuilder.java

License:Open Source License

public static Set<ModifierKind> getModifier(int mod) {
    Set<ModifierKind> ret = new TreeSet<ModifierKind>();
    if ((mod & ClassFileConstants.AccPublic) != 0)
        ret.add(ModifierKind.PUBLIC);//w  ww.  j a v a 2s  . com
    if ((mod & ClassFileConstants.AccPrivate) != 0)
        ret.add(ModifierKind.PRIVATE);
    if ((mod & ClassFileConstants.AccProtected) != 0)
        ret.add(ModifierKind.PROTECTED);
    if ((mod & ClassFileConstants.AccStatic) != 0)
        ret.add(ModifierKind.STATIC);
    if ((mod & ClassFileConstants.AccFinal) != 0)
        ret.add(ModifierKind.FINAL);
    if ((mod & ClassFileConstants.AccSynchronized) != 0)
        ret.add(ModifierKind.SYNCHRONIZED);
    if ((mod & ClassFileConstants.AccVolatile) != 0)
        ret.add(ModifierKind.VOLATILE);
    if ((mod & ClassFileConstants.AccTransient) != 0)
        ret.add(ModifierKind.TRANSIENT);
    if ((mod & ClassFileConstants.AccAbstract) != 0)
        ret.add(ModifierKind.ABSTRACT);
    if ((mod & ClassFileConstants.AccStrictfp) != 0)
        ret.add(ModifierKind.STRICTFP);
    if ((mod & ClassFileConstants.AccNative) != 0)
        ret.add(ModifierKind.NATIVE);
    return ret;
}

From source file:spoon.support.compiler.jdt.JDTTreeBuilder.java

License:Open Source License

public static Set<ModifierKind> getModifiers(int mod) {
    Set<ModifierKind> ret = EnumSet.noneOf(ModifierKind.class);
    if ((mod & ClassFileConstants.AccPublic) != 0) {
        ret.add(ModifierKind.PUBLIC);/*from w w w.  j a v a  2 s. c o m*/
    }
    if ((mod & ClassFileConstants.AccPrivate) != 0) {
        ret.add(ModifierKind.PRIVATE);
    }
    if ((mod & ClassFileConstants.AccProtected) != 0) {
        ret.add(ModifierKind.PROTECTED);
    }
    if ((mod & ClassFileConstants.AccStatic) != 0) {
        ret.add(ModifierKind.STATIC);
    }
    if ((mod & ClassFileConstants.AccFinal) != 0) {
        ret.add(ModifierKind.FINAL);
    }
    if ((mod & ClassFileConstants.AccSynchronized) != 0) {
        ret.add(ModifierKind.SYNCHRONIZED);
    }
    if ((mod & ClassFileConstants.AccVolatile) != 0) {
        ret.add(ModifierKind.VOLATILE);
    }
    if ((mod & ClassFileConstants.AccTransient) != 0) {
        ret.add(ModifierKind.TRANSIENT);
    }
    if ((mod & ClassFileConstants.AccAbstract) != 0) {
        ret.add(ModifierKind.ABSTRACT);
    }
    if ((mod & ClassFileConstants.AccStrictfp) != 0) {
        ret.add(ModifierKind.STRICTFP);
    }
    if ((mod & ClassFileConstants.AccNative) != 0) {
        ret.add(ModifierKind.NATIVE);
    }
    return ret;
}

From source file:spoon.support.compiler.jdt.JDTTreeBuilderQuery.java

License:Open Source License

/**
 * Converts the modifier from JDT to Spoon.
 *
 * @param modifier/*from  w w w.  ja v a  2  s.co m*/
 *       Identifier of the modifier.
 * @param implicit True if the modifier is not explicit in the source code (e.g. a missing 'public' in an interface)
 * @return Set of enum value of {@link CtExtendedModifier}.
 */
static Set<CtExtendedModifier> getModifiers(int modifier, boolean implicit, boolean isMethod) {
    Set<CtExtendedModifier> modifiers = new HashSet<>();
    if ((modifier & ClassFileConstants.AccPublic) != 0) {
        modifiers.add(new CtExtendedModifier(ModifierKind.PUBLIC, implicit));
    }
    if ((modifier & ClassFileConstants.AccPrivate) != 0) {
        modifiers.add(new CtExtendedModifier(ModifierKind.PRIVATE, implicit));
    }
    if ((modifier & ClassFileConstants.AccProtected) != 0) {
        modifiers.add(new CtExtendedModifier(ModifierKind.PROTECTED, implicit));
    }
    if ((modifier & ClassFileConstants.AccStatic) != 0) {
        modifiers.add(new CtExtendedModifier(ModifierKind.STATIC, implicit));
    }
    if ((modifier & ClassFileConstants.AccFinal) != 0) {
        modifiers.add(new CtExtendedModifier(ModifierKind.FINAL, implicit));
    }
    if ((modifier & ClassFileConstants.AccSynchronized) != 0) {
        modifiers.add(new CtExtendedModifier(ModifierKind.SYNCHRONIZED, implicit));
    }
    if ((modifier & ClassFileConstants.AccVolatile) != 0) {
        modifiers.add(new CtExtendedModifier(ModifierKind.VOLATILE, implicit));
    }
    // a method can never be transient, but it can have the flag because of varArgs.
    // source: https://stackoverflow.com/questions/16233910/can-transient-keywords-mark-a-method
    if (!isMethod && (modifier & ClassFileConstants.AccTransient) != 0) {
        modifiers.add(new CtExtendedModifier(ModifierKind.TRANSIENT, implicit));
    }
    if ((modifier & ClassFileConstants.AccAbstract) != 0) {
        modifiers.add(new CtExtendedModifier(ModifierKind.ABSTRACT, implicit));
    }
    if ((modifier & ClassFileConstants.AccStrictfp) != 0) {
        modifiers.add(new CtExtendedModifier(ModifierKind.STRICTFP, implicit));
    }
    if ((modifier & ClassFileConstants.AccNative) != 0) {
        modifiers.add(new CtExtendedModifier(ModifierKind.NATIVE, implicit));
    }
    return modifiers;
}