docs: def pop(self, identifier=None, ext_addr=None, basecls=ISOTP):
          """
          Returns a built ISOTP message
          :param identifier: if not None, only return isotp messages with this
                             destination
          :param ext_addr: if identifier is not None, only return isotp messages
                           with this extended address for destination
          :param basecls: the class of packets that will be returned, defautls to
                          ISOTP
          :return: an ISOTP packet, or None if no message is ready
          """
  
          if identifier is not None:
              for i in range(len(self.ready)):
                  b = self.ready[i]
                  identifier = b[0]
                  ea = b[1]
                  if identifier == identifier and ext_addr == ea:
                      return ISOTPMessageBuilder._build(self.ready.pop(i))
              return None
  
          if len(self.ready) > 0:
              return ISOTPMessageBuilder._build(self.ready.pop(0))
          return None