protected int evaluateModifiers(ASTNode targetTypeDecl) {
private int evaluateModifiers(ASTNode targetTypeDecl) {
	protected int evaluateModifiers(ASTNode targetTypeDecl) {		if (getSenderBinding().isAnnotation()) {			return 0;		}		if (getSenderBinding().isInterface()) {			// for interface and annotation members copy the modifiers from an existing field			MethodDeclaration[] methodDecls= ((TypeDeclaration) targetTypeDecl).getMethods();			if (methodDecls.length > 0) {				return methodDecls[0].getModifiers();			}			return 0;		}		ASTNode invocationNode= getInvocationNode();		if (invocationNode instanceof MethodInvocation) {			int modifiers= 0;			Expression expression= ((MethodInvocation)invocationNode).getExpression();			if (expression != null) {				if (expression instanceof Name && ((Name) expression).resolveBinding().getKind() == IBinding.TYPE) {					modifiers |= Modifier.STATIC;				}			} else if (ASTResolving.isInStaticContext(invocationNode)) {				modifiers |= Modifier.STATIC;			}			ASTNode node= ASTResolving.findParentType(invocationNode);			if (targetTypeDecl.equals(node)) {				modifiers |= Modifier.PRIVATE;			} else if (node instanceof AnonymousClassDeclaration && ASTNodes.isParent(node, targetTypeDecl)) {				modifiers |= Modifier.PROTECTED;				if (ASTResolving.isInStaticContext(node)) {					modifiers |= Modifier.STATIC;				}			} else {				modifiers |= Modifier.PUBLIC;			}			return modifiers;		}		return Modifier.PUBLIC;	}