@@ -0,0 +1,1941 @@
+package com.jetbrains.javascript.debugger;%0A%0Aimport com.intellij.openapi.extensions.ExtensionPointName;%0Aimport com.intellij.openapi.fileEditor.OpenFileDescriptor;%0Aimport com.intellij.openapi.fileTypes.FileType;%0Aimport com.intellij.openapi.project.Project;%0Aimport com.intellij.openapi.vfs.VirtualFile;%0Aimport com.intellij.pom.Navigatable;%0Aimport com.intellij.util.Url;%0Aimport com.intellij.util.containers.ObjectIntHashMap;%0Aimport org.jetbrains.annotations.NotNull;%0Aimport org.jetbrains.annotations.Nullable;%0A%0Aimport java.util.List;%0A%0Apublic abstract class FileUrlMapper %7B%0A  public static final ExtensionPointName%3CFileUrlMapper%3E EP_NAME = ExtensionPointName.create(%22com.jetbrains.fileUrlMapper%22);%0A%0A  @NotNull%0A  public abstract List%3CUrl%3E getUrls(@NotNull VirtualFile file, @NotNull Project project, @Nullable String currentAuthority);%0A%0A  /**%0A   * Optional to implement, useful if default navigation position to source file is not equals to 0:0 (java file for example)%0A   */%0A  @Nullable%0A  public Navigatable getNavigatable(@NotNull Url url, @NotNull Project project, @Nullable Url requestor) %7B%0A    VirtualFile file = getFile(url, project, requestor);%0A    return file == null ? null : new OpenFileDescriptor(project, file);%0A  %7D%0A%0A  @Nullable%0A  public abstract VirtualFile getFile(@NotNull Url url, @NotNull Project project, @Nullable Url requestor);%0A%0A  /**%0A   * Optional to implement, sometimes you cannot build URL, but can match.%0A   * Lifetime: resolve session lifetime. Could be called multiple times: n %3C= total sourcemap count%0A   */%0A  @Nullable%0A  public SourceResolver createSourceResolver(@NotNull VirtualFile file, @NotNull Project project) %7B%0A    return null;%0A  %7D%0A%0A  @Nullable%0A  public FileType getFileType(@NotNull Url url) %7B%0A    return null;%0A  %7D%0A%0A  public static abstract class SourceResolver %7B%0A    /**%0A     * Return -1 if no match%0A     */%0A    public abstract int resolve(@NotNull ObjectIntHashMap%3CUrl%3E map, @NotNull Project project);%0A  %7D%0A%7D

move FileUrlMapper to community — kotlin should be able to use this API