protected virtual AssemblyIdentity/*?*/ Probe(string probeDir, AssemblyIdentity referencedAssembly) {
Contract.Requires(probeDir != null);
Contract.Requires(referencedAssembly != null);
string path = Path.Combine(probeDir, referencedAssembly.Name.Value + ".dll");
if (!File.Exists(path)) path = Path.Combine(probeDir, referencedAssembly.Name.Value + ".winmd");
if (!File.Exists(path)) path = Path.Combine(probeDir, referencedAssembly.Name.Value + ".exe");
if (!File.Exists(path)) return null;
var assembly = this.LoadUnitFrom(path) as IAssembly;
if (assembly == null) return null;
if (!assembly.AssemblyIdentity.Equals(referencedAssembly)) return null;
return assembly.AssemblyIdentity;
}