class IndexableTransaction extends AbstractTransaction {

    public IndexableTransaction(HugeGraphParams graph, BackendStore store) {
        super(graph, store);
    }

    @Override
    public boolean hasUpdate() {
        AbstractTransaction indexTx = this.indexTransaction();
        boolean indexTxChanged = (indexTx != null && indexTx.hasUpdate());
        return indexTxChanged || super.hasUpdate();
    }

    @Override
    protected void reset() {<FILL_FUNCTION_BODY>}

    @Override
    protected void commit2Backend() {
        BackendMutation mutation = this.prepareCommit();
        BackendMutation idxMutation = this.indexTransaction().prepareCommit();
        assert !mutation.isEmpty() || !idxMutation.isEmpty();
        // Commit graph/schema updates and index updates with graph/schema tx
        this.commitMutation2Backend(mutation, idxMutation);
    }

    @Override
    public void commitIfGtSize(int size) throws BackendException {
        int totalSize = this.mutationSize() +
                        this.indexTransaction().mutationSize();
        if (totalSize >= size) {
            this.commit();
        }
    }

    @Override
    public void rollback() throws BackendException {
        try {
            super.rollback();
        } finally {
            this.indexTransaction().rollback();
        }
    }

    @Override
    public void close() {
        try {
            this.indexTransaction().close();
        } finally {
            super.close();
        }
    }

    protected abstract AbstractTransaction indexTransaction();
}

        super.reset();

        // It's null when called by super AbstractTransaction()
        AbstractTransaction indexTx = this.indexTransaction();
        if (indexTx != null) {
            indexTx.reset();
        }
    
<methods>public void <init>(org.apache.hugegraph.HugeGraphParams, org.apache.hugegraph.backend.store.BackendStore) ,public boolean autoCommit() ,public void close() ,public void commit() throws org.apache.hugegraph.backend.BackendException,public void commitIfGtSize(int) throws org.apache.hugegraph.backend.BackendException,public void commitOrRollback() ,public void doAppend(org.apache.hugegraph.backend.store.BackendEntry) ,public void doEliminate(org.apache.hugegraph.backend.store.BackendEntry) ,public void doInsert(org.apache.hugegraph.backend.store.BackendEntry) ,public void doRemove(org.apache.hugegraph.backend.store.BackendEntry) ,public void doUpdateIfAbsent(org.apache.hugegraph.backend.store.BackendEntry) ,public void doUpdateIfPresent(org.apache.hugegraph.backend.store.BackendEntry) ,public org.apache.hugegraph.backend.store.BackendEntry get(org.apache.hugegraph.type.HugeType, org.apache.hugegraph.backend.id.Id) ,public org.apache.hugegraph.HugeGraph graph() ,public org.apache.hugegraph.type.define.GraphMode graphMode() ,public java.lang.String graphName() ,public boolean hasUpdate() ,public boolean hasUpdate(org.apache.hugegraph.type.HugeType, org.apache.hugegraph.type.define.Action) ,public transient R metadata(org.apache.hugegraph.type.HugeType, java.lang.String, java.lang.Object[]) ,public int mutationSize() ,public QueryResults<org.apache.hugegraph.backend.store.BackendEntry> query(org.apache.hugegraph.backend.query.Query) ,public org.apache.hugegraph.backend.store.BackendEntry query(org.apache.hugegraph.type.HugeType, org.apache.hugegraph.backend.id.Id) ,public java.lang.Number queryNumber(org.apache.hugegraph.backend.query.Query) ,public void rollback() throws org.apache.hugegraph.backend.BackendException,public org.apache.hugegraph.backend.store.BackendFeatures storeFeatures() ,public boolean storeInitialized() <variables>protected static final Logger LOG,private boolean autoCommit,private boolean closed,private boolean committing,private boolean committing2Backend,private final non-sealed org.apache.hugegraph.HugeGraphParams graph,private org.apache.hugegraph.backend.store.BackendMutation mutation,private final java.lang.Thread ownerThread,protected final non-sealed org.apache.hugegraph.backend.serializer.AbstractSerializer serializer,private final non-sealed org.apache.hugegraph.backend.store.BackendStore store