code: def frames(self, key=None, orig_order=False):
          
          if key is not None:
              # If there are multiple frames, then they are already in original order.
              key = self._normalize_key(key)
              if len(self._frames[key]) == 0:
                  raise KeyError("Key not found: " + repr(key))
              return self._frames[key]
          
          frames = []
          for frameid in self._frames.keys():
              for frame in self._frames[frameid]:
                  frames.append(frame)
          if orig_order:
              key = (lambda frame: 
                     (0, frame.frameno) 
                     if frame.frameno is not None 
                     else (1,))
          else:
              key = self.frame_order.key
          frames.sort(key=key)
          return frames
docs: Returns a list of frames in this tag.
          If KEY is None, returns all frames in the tag; otherwise returns all frames
          whose frameid matches KEY.
          
          If ORIG_ORDER is True, then the frames are returned in their original order.
          Otherwise the frames are sorted in canonical order according to the frame_order
          field of this tag.