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:
              # this implies that flexible_tag was True
              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)
          if self.flexible_tag:
              return codec.safedec(s, context=self.context)
          else:
              return codec.dec(s, context=self.context)
docs: The good thing about safedec is that it may still decode ASN1
          even if there is a mismatch between the expected tag (self.ASN1_tag)
          and the actual tag; the decoded ASN1 object will simply be put
          into an ASN1_BADTAG object. However, safedec prevents the raising of
          exceptions needed for ASN1F_optional processing.
          Thus we use 'flexible_tag', which should be False with ASN1F_optional.
  
          Regarding other fields, we might need to know whether encoding went
          as expected or not. Noticeably, input methods from cert.py expect
          certain exceptions to be raised. Hence default flexible_tag is False.