/// <summary>
        /// Attempts to resolve and open a resource from the specified name, which may be partially
        /// qualified or entirely unqualified.
        /// </summary>
        /// <param name="resourceName">A partially qualified or unqualified resource name.</param>
        /// <param name="resourceStream">The resource as a <see cref="Stream"/>.</param>
        /// <returns>True, if a resource is found, otherwise False.</returns>
        public bool TryOpenResource(string resourceName, out Stream resourceStream)
        {
            Platform.CheckForEmptyString(resourceName, @"resourceName");
            foreach (var asm in _assemblies)
            {
                var result = ResolveResource(resourceName, asm);
                if (result != null)
                {
                    resourceStream = OpenResource(result, asm);
                    return(true);
                }
            }

            // try the fallback
            if (_fallbackResolver != null)
            {
                return(_fallbackResolver.TryOpenResource(resourceName, out resourceStream));
            }

            resourceStream = null;
            return(false);
        }