Obfuscar.AssemblyCache.SelfResolve C# (CSharp) Method

SelfResolve() private method

private SelfResolve ( Mono.Cecil.AssemblyNameReference name ) : AssemblyDefinition
name Mono.Cecil.AssemblyNameReference
return Mono.Cecil.AssemblyDefinition
        private AssemblyDefinition SelfResolve(AssemblyNameReference name)
        {
            AssemblyDefinition assmDef;
            if (!cache.TryGetValue (name.FullName, out assmDef)) {
                assmDef = null;

                string[] exts = new string[] { ".dll", ".exe" };

                foreach (string ext in exts) {
                    string file = Path.Combine (project.Settings.InPath, name.Name + ext);
                    if (File.Exists (file) && MatchAssemblyName (file, name)) {
                        assmDef = AssemblyDefinition.ReadAssembly (file);
                        if (assmDef.Name.FullName != name.FullName) {
                            assmDef = null;
                            continue;
                        }
                        cache [name.FullName] = assmDef;
                        break;
                    }
                }
                if (assmDef == null) {
                    foreach (string extrapath in extraFolders) {
                        foreach (string ext in exts) {
                            string file = Path.Combine (extrapath, name.Name + ext);
                            if (File.Exists (file) && MatchAssemblyName (file, name)) {
                                assmDef = AssemblyDefinition.ReadAssembly (file);
                                if (assmDef.Name.FullName != name.FullName) {
                                    assmDef = null;
                                    continue;
                                }
                                cache [name.FullName] = assmDef;
                                return assmDef;
                            }
                        }
                    }
                }
                if (assmDef == null)
                    assmDef = resolver.Resolve(name);
                if (assmDef != null)
                    cache[name.FullName] = assmDef;
            }

            return assmDef;
        }