@Override
    public @NotNull PsiType getType(PsiElement context, PsiManager manager) throws IncorrectOperationException {
      PsiWildcardType type;
      if (myBound == null) {
        type = PsiWildcardType.createUnbounded(manager);
      }
      else {
        PsiType boundType = myBound.getType(context, manager);
        if (boundType.equals(PsiTypes.nullType())) {
          throw new IncorrectOperationException("Bound type is null " + getTypeText());
        }
        if (boundType instanceof PsiWildcardType) {
          throw new IncorrectOperationException("Bound type is a wildcard " + getTypeText() + "; " + boundType.getCanonicalText());
        }
        if (myIsExtending) {
          type = PsiWildcardType.createExtends(manager, boundType);
        }
        else {
          type = PsiWildcardType.createSuper(manager, boundType);
        }
      }
      return type.annotate(myProvider);
    }
@Override
    public @NotNull PsiType getType(PsiElement context, PsiManager manager)