code: @Override
      public ResourceReference parse(String rawReference)
      {
          ResourceReference parsedResourceReference = null;
  
          // Step 1: Find the type parser matching the specified prefix type (if any).
          int pos = rawReference.indexOf(TYPE_SEPARATOR);
          if (pos > -1) {
              String typePrefix = rawReference.substring(0, pos);
              String reference = rawReference.substring(pos + 1);
  
              ComponentManager componentManager = this.componentManagerProvider.get();
              if (componentManager.hasComponent(ResourceReferenceTypeParser.class, typePrefix)) {
                  try {
                      ResourceReferenceTypeParser parser =
                          componentManager.getInstance(ResourceReferenceTypeParser.class, typePrefix);
                      parsedResourceReference = parser.parse(reference);
                  } catch (ComponentLookupException e) {
                      this.logger.error("Failed to initialize resource type parser", e);
                  }
              }
          }
  
          // Step 2: If there's no specific type parser found, then consider it's an Unknown type.
          if (parsedResourceReference == null) {
              parsedResourceReference = new ResourceReference(rawReference, ResourceType.UNKNOWN);
          }
  
          // Step 3: If we're not in wiki mode then wiki references are considered URLs.
          if (!isInWikiMode() && WIKI_REFERENCE_TYPES.contains(parsedResourceReference.getType())) {
              parsedResourceReference = new ResourceReference(rawReference, ResourceType.URL);
              parsedResourceReference.setTyped(false);
          }
  
          return parsedResourceReference;
      }
docs: {@inheritDoc}
  
  @return the parsed resource reference or a Resource Reference with {@link ResourceType#UNKNOWN} if no reference
  type was specified
  @see org.xwiki.rendering.parser.ResourceReferenceParser#parse(String)