docs: def create_response(self, data=None):
          """
          Create a response frame based on this frame.
  
          :param data: Data section of response as bytearray. If None, request data section is kept.
          :return: ModbusTCPFrame instance that represents a response
          """
          frame = deepcopy(self)
          if data is not None:
              frame.data = data
          frame.length = 2 + len(frame.data)
          return frame