docs: def parse(self, package_expression):
          """Parse a ``package_expression`` into a :class:`Package` object.
          """
          parts = re.split(r'\s*;\s*', package_expression)
          name_ver_str = parts[0]
          infos = parts[1:]
          dependencies = set()
  
          name_ver_match = RE.match(name_ver_str)
          if not name_ver_match:
              raise InvalidPackageExpression(name_ver_str)
  
          name, version_str = name_ver_match.groups()
          version = Version.parse(version_str)
  
          for info in infos:
              if info.startswith('depends '):
                  dependency_str = info.split(' ', 1)[1]
                  dependency = Requirement.parse(dependency_str)
                  dependencies.add(dependency)
              else:
                  raise InvalidPackageInfo(info)
  
          return Package(name, version, dependencies)