private RoAssembly TryFindAssemblyByCallingResolveHandler(RoAssemblyName refName)
        {
            Debug.Assert(refName != null);

            Assembly?assembly = resolver?.Resolve(this, refName.ToAssemblyName());

            if (assembly == null)
            {
                return(new RoExceptionAssembly(new FileNotFoundException(SR.Format(SR.FileNotFoundAssembly, refName.FullName))));
            }

            if (!(assembly is RoAssembly roAssembly && roAssembly.Loader == this))
            {
                throw new FileLoadException(SR.ExternalAssemblyReturnedByMetadataAssemblyResolver);
            }

            return(roAssembly);
        }
        private RoAssembly TryFindAssemblyByRaisingResolveEvent(RoAssemblyName refName)
        {
            Debug.Assert(refName != null);

            Assembly assembly = Resolving?.Invoke(this, refName.ToAssemblyName());

            if (assembly == null)
            {
                return(new RoExceptionAssembly(new FileNotFoundException(SR.Format(SR.FileNotFoundAssembly, refName.FullName))));
            }

            if (!(assembly is RoAssembly roAssembly && roAssembly.Loader == this))
            {
                throw new FileLoadException(SR.ExternalAssemblyReturnedByResolveHandler);
            }

            return(roAssembly);
        }