anchor.diff:      /// When making a cross-targeting type provider, use this method instead of ProvidedTypeBuilder.MakeGenericMethod
       member __.MakeGenericMethod(genericMethodDefinition, genericArguments) = ptb.MakeGenericMethod(genericMethodDefinition, genericArguments) 
   
  -    static member Create (cfg : TypeProviderConfig) = 
  +    static member Create (cfg : TypeProviderConfig, ?assemblyReplacementMap) = 
   
           // Use the reflection hack to determine the set of referenced assemblies by reflecting over the SystemRuntimeContainsType
           // closure in the TypeProviderConfig object.  
  
positive.code: 
  /// Represents the type binding context for the type provider based on the set of assemblies
  /// referenced by the compilation.
  type internal ProvidedTypesContext(referencedAssemblyPaths : string list) as this = 
  
  
      /// Find which assembly defines System.Object etc.
  
negative.code:       else 
            fullName
  
    let tryGetTypeFromAssembly (originalAssemblyName:string) fullName (asm:Assembly) =
          // if the original assembly of the type being replaced is in `assemblyReplacementMap`,
          // then we only map it to assemblies with a name specified in `assemblyReplacementMap`
          let notRestrictedOrMatching = 
              assemblyReplacementMap
              |> Seq.forall (fun (originalName, newName) ->
                  if originalAssemblyName.StartsWith originalName then asm.FullName.StartsWith(newName)
                  else true)
  
          if not notRestrictedOrMatching then None
          elif asm.FullName.StartsWith "FSI-ASSEMBLY" then
              // when F# Interactive is the host of the design time assembly,
              // for each type in the runtime assembly there might be multiple
              // versions (FSI_0001.FullTypeName, FSI_0002.FullTypeName, etc).
  