private static boolean isAllowed(final @NotNull PsiExpression argument, final @NotNull PsiElement scope,
                                   final @NotNull AllowedValues allowedValues,
                                   final @NotNull PsiManager manager,
                                   @Nullable Set<PsiExpression> visited) {
    if (isGoodExpression(argument, allowedValues, scope, manager, visited)) return true;

    return processValuesFlownTo(argument, scope, manager,
                                expression -> isGoodExpression(expression, allowedValues, scope, manager, visited));
  }
private static boolean isAllowed(final @NotNull PsiExpression argument, final @NotNull PsiElement scope,
                                   final @NotNull AllowedValues allowedValues,
                                   final @NotNull PsiManager manager,
                                   @Nullable Set<PsiExpression> visited)