class ReversibleTransactionExecutor {

    public ProgramResult executeTransaction(
            Block executionBlock,
            RskAddress coinbase,
            byte[] gasPrice,
            byte[] gasLimit,
            byte[] toAddress,
            byte[] value,
            byte[] data,
            RskAddress fromAddress) {
        return executeTransaction_workaround(
                repositoryLocator.snapshotAt(executionBlock.getHeader()),
                executionBlock,
                coinbase,
                gasPrice,
                gasLimit,
                toAddress,
                value,
                data,
                fromAddress
        );
    }

    public  ReversibleTransactionExecutor(
            RepositoryLocator repositoryLocator,
            TransactionExecutorFactory transactionExecutorFactory);

}