package awesome.console;

import com.intellij.execution.filters.ConsoleFilterProvider;
import com.intellij.execution.filters.Filter;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;

public class AwesomeLinkFilterProvider implements ConsoleFilterProvider {
	@NotNull
	@Override
	public Filter[] getDefaultFilters(@NotNull final Project project) {
		return new Filter[]{new AwesomeLinkFilter(project)};
	}
}

@@ -60,24 +60,33 @@
 ters.Console
+Dependent
 FilterProvid
@@ -159,73 +159,239 @@
 lij.
-openapi.project.Project;%0Aimport org.jetbrains.annotations.NotNull
+execution.ui.ConsoleView;%0Aimport com.intellij.openapi.project.Project;%0Aimport com.intellij.psi.search.GlobalSearchScope;%0Aimport org.jetbrains.annotations.NotNull;%0A%0Aimport java.util.Map;%0Aimport java.util.concurrent.ConcurrentHashMap
 ;%0A%0Ap
@@ -432,17 +432,14 @@
 der 
-implement
+extend
 s Co
@@ -443,16 +443,25 @@
  Console
+Dependent
 FilterPr
@@ -474,106 +474,454 @@
  %7B%0A%09
-@NotNull%0A%09@Override%0A%09public Filter%5B%5D getDefaultFilters(@NotNull final Project project) %7B%0A%09%09return 
+private static final Map%3CProject, Filter%5B%5D%3E cache = new ConcurrentHashMap%3C%3E();%0A%0A%09@NotNull%0A%09@Override%0A%09public Filter%5B%5D getDefaultFilters(@NotNull final ConsoleView consoleView, @NotNull final Project project, @NotNull final GlobalSearchScope globalSearchScope) %7B%0A%09%09return getDefaultFilters(project);%0A%09%7D%0A%0A%09@NotNull%0A%09@Override%0A%09public Filter%5B%5D getDefaultFilters(@NotNull final Project project) %7B%0A%09%09return cache.computeIfAbsent(project, (key) -%3E%0A%09%09%09%09
 new 
@@ -964,11 +964,14 @@
 ct)%7D
+%0A%09%09)
 ;%0A%09%7D%0A%7D
-%0A

use cached filter provider to avoid performance regression