code: public static function resolveQName($qname): SchemaCurie
      {
          if (!$qname instanceof SchemaQName) {
              $qname = SchemaQName::fromString((string)$qname);
          }
  
          $key = $qname->toString();
  
          if (isset(self::$resolvedQnames[$key])) {
              return self::$resolvedQnames[$key];
          }
  
          $qvendor = $qname->getVendor();
          $qmessage = $qname->getMessage();
  
          foreach (self::$curies as $curie => $id) {
              list($vendor, $package, $category, $message) = explode(':', $curie);
              if ($qvendor === $vendor && $qmessage === $message) {
                  return self::$resolvedQnames[$key] = SchemaCurie::fromString($vendor . ':' . $package . ':' . $category . ':' . $message);
              }
          }
  
          throw new NoMessageForQName($qname);
      }
docs: @param SchemaQName|string $qname
  
  @return SchemaCurie
  
  @throws NoMessageForQName