class InnerValidator extends SymbolVisitor<Void, Void> {

        @Override
        public Void visitFunction(Function symbol, Void context) {<FILL_FUNCTION_BODY>}

        @Override
        public Void visitMatchPredicate(MatchPredicate matchPredicate, Void context) {
            throw new UnsupportedOperationException("match predicate cannot be selected");
        }

        @Override
        public Void visitSymbol(Symbol symbol, Void context) {
            return null;
        }
    }

            switch (symbol.signature().getKind()) {
                case SCALAR:
                case AGGREGATE:
                case TABLE:
                    break;
                default:
                    throw new UnsupportedOperationException(String.format(Locale.ENGLISH,
                        "FunctionInfo.Type %s not handled", symbol.signature().getKind()));
            }
            for (Symbol arg : symbol.arguments()) {
                arg.accept(this, context);
            }
            return null;
        
<no_super_class>