protected virtual AssemblyIdentity GetSystemCoreAssemblySymbolicIdentity() {
Contract.Ensures(Contract.Result<AssemblyIdentity>() != null);
var core = this.CoreAssemblySymbolicIdentity;
var name = this.NameTable.GetNameFor("System.Core");
var location = "";
if (core.Location.Length > 0)
location = Path.Combine(Path.GetDirectoryName(core.Location)??"", "System.Core.dll");
var version = new Version(3, 5, 0, 0);
if (version < core.Version) version = core.Version;
return new AssemblyIdentity(name, core.Culture, version, core.PublicKeyToken, location);
}