private void complete(final MessageFrame frame, final MessageFrame childFrame, final EVM evm) {
    frame.setState(MessageFrame.State.CODE_EXECUTING);

    frame.incrementRemainingGas(childFrame.getRemainingGas());
    frame.addLogs(childFrame.getLogs());
    frame.addSelfDestructs(childFrame.getSelfDestructs());
    frame.addCreates(childFrame.getCreates());
    frame.popStackItems(getStackItemsConsumed());

    if (childFrame.getState() == MessageFrame.State.COMPLETED_SUCCESS) {
      Code outputCode =
          (childFrame.getCreatedCode() != null)
              ? childFrame.getCreatedCode()
              : evm.getCodeForCreation(childFrame.getOutputData());
      if (outputCode.isValid()) {
        Address createdAddress = childFrame.getContractAddress();
        frame.pushStackItem(Words.fromAddress(createdAddress));
        frame.setReturnData(Bytes.EMPTY);
        onSuccess(frame, createdAddress);
      } else {
        frame.getWorldUpdater().deleteAccount(childFrame.getRecipientAddress());
        frame.setReturnData(childFrame.getOutputData());
        frame.pushStackItem(Bytes.EMPTY);
        onInvalid(frame, (CodeInvalid) outputCode);
      }
    } else {
      frame.setReturnData(childFrame.getOutputData());
      frame.pushStackItem(Bytes.EMPTY);
      onFailure(frame, childFrame.getExceptionalHaltReason());
    }

    final int currentPC = frame.getPC();
    frame.setPC(currentPC + getPcIncrement());
  }
Get the input data to be appended to the EOF factory contract. For CREATE and CREATE2 this is
always empty

@param frame the message frame the operation was called in
@return the input data as raw bytes, or `Bytes.EMPTY` if there is no aux data
evm/src/main/java/org/hyperledger/besu/evm/operation/AbstractCreateOperation.java