class StoreDumper {

    private final HugeGraph graph;

    private static final Logger LOG = Log.logger(StoreDumper.class);

    public StoreDumper(String conf) {
        this.graph = HugeFactory.open(conf);
    }

    public void dump(HugeType table, long offset, long limit) {<FILL_FUNCTION_BODY>}

    private BackendStore backendStore(HugeType table) {
        String m = table.isSchema() ? "schemaTransaction" : "graphTransaction";
        Object tx = Whitebox.invoke(this, "graph", m);
        return Whitebox.invoke(tx.getClass(), "store", tx);
    }

    public void close() throws Exception {
        this.graph.close();
    }

    public static void main(String[] args) throws Exception {
        E.checkArgument(args.length >= 1,
                        "StoreDumper need a config file.");

        String conf = args[0];
        RegisterUtil.registerBackends();

        HugeType table = HugeType.valueOf(arg(args, 1, "VERTEX").toUpperCase());
        long offset = Long.parseLong(arg(args, 2, "0"));
        long limit = Long.parseLong(arg(args, 3, "20"));

        StoreDumper dumper = new StoreDumper(conf);
        dumper.dump(table, offset, limit);
        dumper.close();

        // Stop daemon thread
        HugeFactory.shutdown(30L, true);
    }

    private static String arg(String[] args, int index, String deflt) {
        if (index < args.length) {
            return args[index];
        }
        return deflt;
    }
}

        BackendStore store = this.backendStore(table);

        Query query = new Query(table);
        Iterator<BackendEntry> rs = store.query(query);
        for (long i = 0; i < offset && rs.hasNext(); i++) {
            rs.next();
        }

        LOG.info("Dump table {} (offset {} limit {}):", table, offset, limit);

        for (long i = 0; i < limit && rs.hasNext(); i++) {
            BackendEntry entry = rs.next();
            LOG.info("{}", entry);
        }

        CloseableIterator.closeIterator(rs);
    
<no_super_class>