@Override
    public NSImage iconNamed(final String name, final Integer width, final Integer height) {
        // Search for an object whose name was set explicitly using the setName: method and currently
        // resides in the image cache
        NSImage image = this.load(name, width);
        if(null == image) {
            if(null == name) {
                return this.iconNamed("notfound.tiff", width, height);
            }
            else if(name.contains(PreferencesFactory.get().getProperty("local.delimiter"))) {
                return this.cache(FilenameUtils.getName(name), this.convert(FilenameUtils.getName(name),
                        NSImage.imageWithContentsOfFile(name), width, height), width);
            }
            else {
                return this.cache(name, this.convert(name,
                        NSImage.imageNamed(name), width, height), width);
            }
        }
        return image;
    }
@Test
    public void testCacheSystemIcon() {
        final NSImageIconCache cache = new NSImageIconCache();
        final NSImage icon32 = cache.iconNamed("NSComputer", 32);
        assertNotNull(icon32);
        assertEquals(32, icon32.size().width.intValue());
        assertEquals(32, icon32.size().height.intValue());
        final NSImage icon16 = cache.iconNamed("NSComputer", 16);
        assertNotNull(icon16);
        assertEquals(16, icon16.size().width.intValue());
        assertEquals(16, icon16.size().height.intValue());
        final NSImage icon64 = cache.iconNamed("NSComputer", 64);
        assertNotNull(icon64);
        assertEquals(64, icon64.size().width.intValue());
        assertEquals(64, icon64.size().height.intValue());
        assertNotNull(NSImage.imageNamed("NSComputer (16px)"));
        assertNotNull(NSImage.imageNamed("NSComputer (32px)"));
        assertNotNull(NSImage.imageNamed("NSComputer (64px)"));
    }