public CopyOutOfBandContracts(AssemblyNode targetAssembly, AssemblyNode sourceAssembly, ContractNodes contractNodes, ContractNodes targetContractNodes) { Contract.Requires(targetAssembly != null); Contract.Requires(sourceAssembly != null); Contract.Requires(contractNodes != null); if (targetAssembly == sourceAssembly) { // this happened when a reference assembly for mscorlib had the assembly name "mscorlib" // instead of "mscorlib.Contracts" because only one assembly named "mscorlib" can be // loaded throw new ExtractorException("CopyOutOfBandContracts was given the same assembly as both the source and target!"); } this.outOfBandDuplicator = new ForwardingDuplicator(targetAssembly, null, contractNodes, targetContractNodes); this.targetAssembly = targetAssembly; FuzzilyForwardReferencesFromSource2Target(targetAssembly, sourceAssembly); CopyMissingMembers(); // FixupMissingProperties(); shouldn't be needed with new duplicator }