code: def _parse(self, source, accept_encoded_idn, only_icann=False):
          
  
          publicsuffix = set()
          maxlabel = 0
          section_is_icann = None
  
          if isinstance(source, decodablestr):
              source = source.splitlines()
  
          ln = 0
          for line in source:
              ln += 1
              if only_icann:
                  ul = u(line).rstrip()
                  if ul == "// ===BEGIN ICANN DOMAINS===":
                      section_is_icann = True
                      continue
                  elif ul == "// ===END ICANN DOMAINS===":
                      section_is_icann = False
                      continue
                  if not section_is_icann:
                      continue
  
              s = u(line).lower().split(" ")[0].rstrip()
              if s == "" or s.startswith("//"):
                  continue
  
              maxlabel = max(maxlabel, s.count(".") + 1)
              publicsuffix.add(s)
              if accept_encoded_idn:
                  e = encode_idn(s.lstrip("!"))
                  if s[0] == "!":
                      publicsuffix.add("!" + e)
                  else:
                      publicsuffix.add(e)
  
          self._publicsuffix = frozenset(publicsuffix)
          self._maxlabel = maxlabel
docs: PSL parser core