for (ExportedInstance<ProjectLocator> instance : registry.getExportedInstances(ProjectLocator.class))
{
DirectoryResource r = (target instanceof DirectoryResource) ? (DirectoryResource) target : target.getParent();
while (r != null && result == null)
{
ProjectLocator locator = instance.get();
if (locator.containsProject(r))
{
result = locator.createProject(r);
if (!filter.accept(result))
result = null;
}
r = r.getParent();