class CacheScanCommand implements ComputeCommand<CacheScanCommandArg, CacheScanTaskResult> {
    /** {@inheritDoc} */
    @Override public String description() {
        return "Show cache content";
    }

    /** {@inheritDoc} */
    @Override public Class<CacheScanCommandArg> argClass() {
        return CacheScanCommandArg.class;
    }

    /** {@inheritDoc} */
    @Override public Class<CacheScanTask> taskClass() {
        return CacheScanTask.class;
    }

    /** {@inheritDoc} */
    @Override public void printResult(CacheScanCommandArg arg, CacheScanTaskResult res, Consumer<String> printer) {<FILL_FUNCTION_BODY>}
}

        List<SystemViewTask.SimpleType> types = res.titles().stream()
            .map(x -> SystemViewTask.SimpleType.STRING).collect(Collectors.toList());

        SystemViewCommand.printTable(res.titles(), types, res.entries(), printer);

        if (res.entries().size() == arg.limit())
            printer.accept("Result limited to " + arg.limit() + " rows. Limit can be changed with '--limit' argument.");
    
<no_super_class>