anchor.diff:              |> Seq.toArray
             newT.MakeGenericType(typeArguments)
         else 
  -        getType (getFullName t)
  +        getType (fixName t.FullName)
       if newT = null then
         failwithf "Type '%O' not found in '%s'" t asm.Location
       newT
   
  -  let rec getAssemblies (t:Type) = [
  -    yield t.Assembly
  -    if t.IsGenericType && not t.IsGenericTypeDefinition then
  -      for t in t.GetGenericArguments() do
  -        yield! getAssemblies t
  -  ]
  +  // there might be multiple assemblies involved in generic types
  +  let private getAssemblies t =
  +    let rec innerGetAssemblies (t:Type) = seq {
  +      yield t.Assembly
  +      if t.IsGenericType && not t.IsGenericTypeDefinition then
  +        for t in t.GetGenericArguments() do
  +          yield! innerGetAssemblies t
  +    }
  +    t |> innerGetAssemblies |> Seq.distinct |> Seq.toList
   
     let rec private replaceType asmMappings (t : Type) =    
       if t.GetType().Name = "ProvidedSymbolType" then t
  
positive.code:     else replace asmMappings (v, getAssemblies v.Type) (fun toAsm ->
        if reversePass then
          let newVar = Var (v.Name, getType toAsm v.Type (replaceType asmMappings), v.IsMutable)
          // store the asmMappings as we'll have to revert them later
          varTable.Add(newVar, v)
          newVar
        else
  
negative.code: ﻿// --------------------------------------------------------------------------------------
  // Utilities for transforming F# quotations to reference types from different assemblies
  // --------------------------------------------------------------------------------------
  
  namespace ProviderImplementation
  