anchor.diff:  //                | Some s -> metaprogram.Replace(s, sprintf "%s\n[<AutoOpen>]module %s=\n" s moduleName )
   //                | None -> sprintf "[<AutoOpen>]module %s=\n%s" moduleName metaprogram
   
  -        File.AppendAllText("I:\\mixin.tmp", sprintf "entering compile on thread %A %A\n" System.Threading.Thread.CurrentThread.ManagedThreadId id) 
  -                                  
           if File.Exists sourceFile then File.Delete sourceFile
           if File.Exists dllFile then File.Delete dllFile
                           
  
positive.code:                 let asm = Assembly.LoadFrom dllFile
                  if state.ContainsKey asmName then state.Remove asmName |> ignore
                  state.Add(asmName, {originalSource=metaprogram; assemblyLocation = dllFile; assembly = asm; metaprogramParams = metaprogramParams })
                  File.AppendAllText("I:\\mixin.tmp", sprintf "good exit on thread %A %A\n" System.Threading.Thread.CurrentThread.ManagedThreadId id) 
                  Good asm
              | _ -> 
                  File.AppendAllText("I:\\mixin.tmp", sprintf "bad exit on thread %A %A\n" System.Threading.Thread.CurrentThread.ManagedThreadId id) 
                  Bad (new Exception("metaprogram failed"))
          with
          | ex -> Bad (Exception(sbErr.ToString(), ex))
  
negative.code:             | Some x -> 
                  let source = x.ReflectionValue :?> string
                  let source = sprintf "[<AutoOpen>]module %s\n%s" moduleName source
                  File.WriteAllText(sourceFile, source)
                  let args = args dllFile
                  let errors, code = scs.Compile args
  