@Override
    public List<Application> getAllHandlers(final String scheme) {
        final List<Application> applications = new ArrayList<>();
        final NSArray urls = workspace.URLsForApplicationsToOpenURL(NSURL.URLWithString(String.format("%s:/", scheme)));
        NSEnumerator enumerator = urls.objectEnumerator();
        NSObject next;
        while((next = enumerator.nextObject()) != null) {
            final NSURL url = Rococoa.cast(next, NSURL.class);
            final NSBundle bundle = NSBundle.bundleWithPath(url.path());
            if(null == bundle) {
                log.warn(String.format("Failure loading bundle for path %s", url.path()));
                continue;
            }
            if(null == bundle.bundleIdentifier()) {
                log.warn(String.format("Missing CFBundleIdentifier for bundle at path %s", url.path()));
                continue;
            }
            final Application application = finder.getDescription(bundle.bundleIdentifier());
            if(finder.isInstalled(application)) {
                applications.add(application);
            }
        }
        return applications;
    }
@Test
    public void testGetAllHandlers() {
        assumeTrue(Factory.Platform.osversion.matches("12\\..*"));
        final List<Application> list = new WorkspaceSchemeHandler(new LaunchServicesApplicationFinder()).getAllHandlers("http:/");
        assertFalse(list.isEmpty());
        for(Application application : list) {
            assertNotNull(application.getIdentifier());
        }
    }