@Restricted(NoExternalUse.class)
    public static Icon tryGetIcon(String iconGuess) {
        // Jenkins Symbols don't have metadata so return null
        if (iconGuess == null || iconGuess.startsWith("symbol-")) {
            return null;
        }

        Icon iconMetadata = IconSet.icons.getIconByClassSpec(iconGuess);

        // `iconGuess` must be class names if it contains a whitespace.
        //  It may contains extra css classes unrelated to icons.
        // Filter classes with `icon-` prefix.
        if (iconMetadata == null && iconGuess.contains(" ")) {
            iconMetadata = IconSet.icons.getIconByClassSpec(filterIconNameClasses(iconGuess));
        }

        if (iconMetadata == null) {
            // Icon could be provided as a simple iconFileName e.g. "help.svg"
            iconMetadata = IconSet.icons.getIconByClassSpec(IconSet.toNormalizedIconNameClass(iconGuess) + " icon-md");
        }

        if (iconMetadata == null) {
            // Icon could be provided as an absolute iconFileName e.g. "/plugin/foo/abc.png"
            iconMetadata = IconSet.icons.getIconByUrl(iconGuess);
        }

        return iconMetadata;
    }
@Test
    public void tryGetIcon_shouldReturnNullForNull() throws Exception {
        assertThat(Functions.tryGetIcon(null), is(nullValue()));
    }