@Override
  public boolean isAccessible() {
    Boolean accessible = myAccessible;

    if (accessible == null) {
      accessible = true;

      if (myPlace != null) {
        PsiResolveHelper helper = JavaPsiFacade.getInstance(myPlace.getProject()).getResolveHelper();

        if (myCandidate instanceof PsiMember) {
          PsiMember member = (PsiMember)myCandidate;
          accessible = helper.isAccessible(member, member.getModifierList(), myPlace, myAccessClass, myCurrentFileResolveContext);

          if (accessible &&
              member.hasModifierProperty(PsiModifier.PRIVATE) &&
              myPlace instanceof PsiReferenceExpression &&
              JavaVersionService.getInstance().isAtLeast(myPlace, JavaSdkVersion.JDK_1_7)) {
            accessible = !isAccessedThroughTypeParameterBound();
          }
        }
        else if (myCandidate instanceof PsiPackage) {
          accessible = helper.isAccessible((PsiPackage)myCandidate, myPlace);
        }
      }

      myAccessible = accessible;
    }

    return accessible;
  }
@Override
  public boolean isAccessible()