code: def parse_extras(self):
          # type: () -> None
          
  
          extras = None
          if "@" in self.line or self.is_vcs or self.is_url:
              line = "{0}".format(self.line)
              uri = URI.parse(line)
              name = uri.name
              if name:
                  self._name = name
              if uri.host and uri.path and uri.scheme:
                  self.line = uri.to_string(
                      escape_password=False, direct=False, strip_ssh=uri.is_implicit_ssh
                  )
              else:
                  self.line, extras = pip_shims.shims._strip_extras(self.line)
          else:
              self.line, extras = pip_shims.shims._strip_extras(self.line)
          extras_set = set()  # type: Set[STRING_TYPE]
          if extras is not None:
              extras_set = set(parse_extras(extras))
          if self._name:
              self._name, name_extras = pip_shims.shims._strip_extras(self._name)
              if name_extras:
                  name_extras = set(parse_extras(name_extras))
                  extras_set |= name_extras
          if extras_set is not None:
              self.extras = tuple(sorted(extras_set))
docs: Parse extras from *self.line* and set them on the current object
          :returns: Nothing
          :rtype: None