Repository: apache/flink
File: flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/ProcessTableFunctionTestUtils.java (Java)

Code before:
    }

    /** Testing function. */
    public static class TypedSetSemanticTableFunction extends AppendProcessTableFunctionBase {
        public void eval(@ArgumentHint(SET_SEMANTIC_TABLE) User u, Integer i) {
            collectObjects(u, i);
        }
    }

    /** Testing function. */
    public static class PojoArgsFunction extends AppendProcessTableFunctionBase {
        public void eval(@ArgumentHint(ROW_SEMANTIC_TABLE) User input, User scalar) {
            collectObjects(input, scalar);
        }
    }

    /** Testing function. */
    public static class EmptyArgFunction extends AppendProcessTableFunctionBase {
        public void eval() {
            collectObjects("empty");
        }
    }

    /** Testing function. */
    public static class IntervalDayArgFunction extends AppendProcessTableFunctionBase {
        public void eval(@DataTypeHint Duration d) {
            collectObjects(d);
        }
    }

    /** Testing function. */
    public static class IntervalYearArgFunction extends AppendProcessTableFunctionBase {
        public void eval(@DataTypeHint Period p) {
            collectObjects(p);
        }
    }

    /** Testing function. */
    public static class RowSemanticTablePassThroughFunction extends AppendProcessTableFunctionBase {
        public void eval(
                @ArgumentHint({ROW_SEMANTIC_TABLE, PASS_COLUMNS_THROUGH}) Row r, Integer i) {
            collectObjects(r, i);
        }
    }

    /** Testing function. */
    public static class SetSemanticTablePassThroughFunction extends AppendProcessTableFunctionBase {
        public void eval(
                @ArgumentHint({SET_SEMANTIC_TABLE, PASS_COLUMNS_THROUGH}) Row r, Integer i) {
            collectObjects(r, i);
        }

Review comment (suggestion):
```suggestion
        public void eval(Duration d) {
```

Code after:

        public void eval(@ArgumentHint(ArgumentTrait.ROW_SEMANTIC_TABLE) Row r, Integer i) {
            collectObjects(r, i);
        }
    }

    /** Testing function. */
    public static class NoSystemArgsScalarFunction extends AppendProcessTableFunctionBase {
        public TypeInference getTypeInference(DataTypeFactory typeFactory) {
            return TypeInference.newBuilder()
                    .disableSystemArguments(true)
                    .staticArguments(StaticArgument.scalar("i", DataTypes.INT(), false))
                    .outputTypeStrategy(
                            callContext ->
                                    Optional.of(
                                            DataTypes.ROW(
                                                            DataTypes.FIELD(
                                                                    "out",
                                                                    DataTypes.STRING().notNull()))
                                                    .notNull()))
                    .build();
        }

        public void eval(Integer i) {
            collectObjects(i);
        }
    }

    /** Testing function. */
    public static class ScalarArgsFunction extends AppendProcessTableFunctionBase {
        public void eval(Integer i, Boolean b) {
            collectObjects(i, b);
        }
    }

    /** Testing function. */
    public static class RowSemanticTableFunction extends AppendProcessTableFunctionBase {
        public void eval(@ArgumentHint(ArgumentTrait.ROW_SEMANTIC_TABLE) Row r, Integer i) {
            collectObjects(r, i);
        }
    }

    /** Testing function. */
    public static class TypedRowSemanticTableFunction extends AppendProcessTableFunctionBase {
        public void eval(@ArgumentHint(ArgumentTrait.ROW_SEMANTIC_TABLE) User u, Integer i) {
            collectObjects(u, i);
        }
    }

    /** Testing function. */
    public static class SetSemanticTableFunction extends AppendProcessTableFunctionBase {