/// <summary>
        /// Resolve assembly.
        /// </summary>
        /// <param name="name">Name of the assembly.</param>
        /// <returns>Returns resolved assembly.</returns>
        public override AssemblyDefinition Resolve(AssemblyNameReference name)
        {
            if (name == null)
            {
                throw Error.ArgumentNull("name");
            }

            AssemblyDefinition assemblyDefinition = null;

            if (_cache.TryGetValue(name.FullName, out assemblyDefinition))
            {
                return(assemblyDefinition);
            }

            var projectRef = _projectReferences.SingleOrDefault(item => name.IsEquals(item, true));

            assemblyDefinition = (projectRef != null && projectRef.CompareTo(name.FullName) != 0)
                ? ReadAssembly(projectRef)
                : base.Resolve(name);

            return(AddToCache(assemblyDefinition));
        }