class OutputColsHelper implements Serializable {

    public Row getResultRow(Row input, Row output) {
        int numOutputs = outputColsPosInResult.length;
        if (output.getArity() != numOutputs) {
            throw new IllegalArgumentException("Invalid output size");
        }
        int resultLength = reservedCols.length + outputColNames.length;
        Row result = new Row(resultLength);
        for (int i = 0; i < reservedCols.length; i++) {
            result.setField(reservedColsPosInResult[i], input.getField(reservedCols[i]));
        }
        for (int i = 0; i < numOutputs; i++) {
            result.setField(outputColsPosInResult[i], output.getField(i));
        }
        return result;
    }

    public  OutputColsHelper(TableSchema inputSchema, String outputColName, TypeInformation outputColType);
    public  OutputColsHelper(TableSchema inputSchema, String outputColName, TypeInformation outputColType,
                            String[] reservedColNames);
    public  OutputColsHelper(TableSchema inputSchema, String[] outputColNames, TypeInformation[] outputColTypes);
    public  OutputColsHelper(TableSchema inputSchema, String[] outputColNames, TypeInformation[] outputColTypes,
                            String[] reservedColNames);

}