class ConsistencyRepairCommand implements LocalCommand<ConsistencyRepairCommandArg, String> {
    /** {@inheritDoc} */
    @Override public String description() {
        return "Check/Repair cache consistency using Read Repair approach";
    }

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

    /** {@inheritDoc} */
    @Override public String execute(
        @Nullable GridClient cli,
        @Nullable Ignite ignite,
        ConsistencyRepairCommandArg arg,
        Consumer<String> printer
    ) throws GridClientException, IgniteException {
        StringBuilder sb = new StringBuilder();
        boolean failed = false;

        if (arg.parallel())
            failed = execute(cli, ignite, arg, nodes(cli, ignite), sb);
        else {
            Set<GridClientNode> nodes = nodes(cli, ignite).stream()
                .filter(node -> !node.isClient())
                .collect(toSet());

            for (GridClientNode node : nodes) {
                failed = execute(cli, ignite, arg, Collections.singleton(node), sb);

                if (failed)
                    break;
            }
        }

        String res = sb.toString();

        if (failed)
            throw new IgniteException(res);

        printer.accept(res);

        return res;
    }

    /** */
    private boolean execute(
        @Nullable GridClient cli,
        @Nullable Ignite ignite,
        ConsistencyRepairCommandArg arg,
        Collection<GridClientNode> nodes,
        StringBuilder sb
    ) throws GridClientException {<FILL_FUNCTION_BODY>}
}

        boolean failed = false;

        ConsistencyTaskResult res = CommandUtils.execute(
            cli,
            ignite,
            ConsistencyRepairTask.class,
            arg,
            nodes
        );

        if (res.cancelled()) {
            sb.append("Operation execution cancelled.\n\n");

            failed = true;
        }

        if (res.failed()) {
            sb.append("Operation execution failed.\n\n");

            failed = true;
        }

        if (failed)
            sb.append("[EXECUTION FAILED OR CANCELLED, RESULTS MAY BE INCOMPLETE OR INCONSISTENT]\n\n");

        if (res.message() != null)
            sb.append(res.message());
        else
            assert !arg.parallel();

        return failed;
    
<no_super_class>