code: def m2i(self, pkt, s):
          
          diff_tag, s = BER_tagging_dec(s, hidden_tag=self.ASN1_tag,
                                        implicit_tag=self.implicit_tag,
                                        explicit_tag=self.explicit_tag,
                                        safe=self.flexible_tag)
          if diff_tag is not None:
              if self.implicit_tag is not None:
                  self.implicit_tag = diff_tag
              elif self.explicit_tag is not None:
                  self.explicit_tag = diff_tag
          codec = self.ASN1_tag.get_codec(pkt.ASN1_codec)
          i, s, remain = codec.check_type_check_len(s)
          if len(s) == 0:
              for obj in self.seq:
                  obj.set_val(pkt, None)
          else:
              for obj in self.seq:
                  try:
                      s = obj.dissect(pkt, s)
                  except ASN1F_badsequence:
                      break
              if len(s) > 0:
                  raise BER_Decoding_Error("unexpected remainder", remaining=s)
          return [], remain
docs: ASN1F_SEQUENCE behaves transparently, with nested ASN1_objects being
          dissected one by one. Because we use obj.dissect (see loop below)
          instead of obj.m2i (as we trust dissect to do the appropriate set_vals)
          we do not directly retrieve the list of nested objects.
          Thus m2i returns an empty list (along with the proper remainder).
          It is discarded by dissect() and should not be missed elsewhere.