private Optional<Bytes[]> captureMemory(final MessageFrame frame) {
    if (!options.traceMemory() || frame.memoryWordSize() == 0) {
      return Optional.empty();
    }
    final Bytes[] memoryContents = new Bytes[frame.memoryWordSize()];
    for (int i = 0; i < memoryContents.length; i++) {
      memoryContents[i] = frame.readMemory(i * 32L, 32);
    }
    return Optional.of(memoryContents);
  }
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