class RefreshTableAnalyzer {

    private final NodeContext nodeCtx;
    private final Schemas schemas;

    RefreshTableAnalyzer(NodeContext nodeCtx, Schemas schemas) {
        this.nodeCtx = nodeCtx;
        this.schemas = schemas;
    }

    public AnalyzedRefreshTable analyze(RefreshStatement<Expression> refreshStatement,
                                        ParamTypeHints paramTypeHints,
                                        CoordinatorTxnCtx txnCtx) {<FILL_FUNCTION_BODY>}
}

        var exprAnalyzerWithFieldsAsString = new ExpressionAnalyzer(
            txnCtx, nodeCtx, paramTypeHints, FieldProvider.TO_LITERAL_VALIDATE_NAME, null);
        var exprCtx = new ExpressionAnalysisContext(txnCtx.sessionSettings());

        HashMap<Table<Symbol>, DocTableInfo> analyzedTables = new HashMap<>();
        for (var table : refreshStatement.tables()) {
            var analyzedTable = table.map(t -> exprAnalyzerWithFieldsAsString.convert(t, exprCtx));
            DocTableInfo tableInfo = schemas.findRelation(
                table.getName(),
                Operation.REFRESH,
                txnCtx.sessionSettings().sessionUser(),
                txnCtx.sessionSettings().searchPath()
            );
            analyzedTables.put(analyzedTable, tableInfo);
        }
        return new AnalyzedRefreshTable(analyzedTables);
    
<no_super_class>