private Optional<Map<UInt256, UInt256>> captureStorage(final MessageFrame frame) {
    if (!options.traceStorage()) {
      return Optional.empty();
    }
    try {
      Map<UInt256, UInt256> updatedStorage =
          frame.getWorldUpdater().getAccount(frame.getRecipientAddress()).getUpdatedStorage();
      if (updatedStorage.isEmpty()) return Optional.empty();
      final Map<UInt256, UInt256> storageContents = new TreeMap<>(updatedStorage);

      return Optional.of(storageContents);
    } catch (final ModificationNotAllowedException e) {
      return Optional.of(new TreeMap<>());
    }
  }
Creates the operation tracer.

@param options The options, as passed in through the RPC
@param recordChildCallGas A flag on whether to produce geth style (true) or parity style
    (false) gas amounts for call operations
ethereum/core/src/main/java/org/hyperledger/besu/ethereum/vm/DebugOperationTracer.java