anchor.diff:    | [| name; result |] -> name, result
     | _ -> failwith "oops!"
   
  -let ignoreRuntime (typArg: Type) =
  -  let ignoreType = FSharpType.MakeFunctionType(typArg, typeof<unit>)
  -  FSharpValue.MakeFunction(ignoreType, fun _ -> box ())
  +module Runtime =
  +  let getModule<'TSameAssemblyType>(name: string) = (typeof<'TSameAssemblyType>).Assembly.GetType(name)
   
  -let mapIgnoreRuntime (typArg: Type) (res: obj) : TestResult<unit> =
  -  let typ = (typeof<TestResult<_>>).Assembly.GetType("Persimmon+TestResult")
  -  let map = typ.GetMethod("map").MakeGenericMethod([| typArg; typeof<unit> |])
  -  let result = map.Invoke(null, [| ignoreRuntime typArg; res |])
  -  result :?> TestResult<unit>
  -
  -module Runtime =
     let invoke (m: MethodInfo) typeArgs args =
       let f =
         match typeArgs with
  
positive.code:     result :?> 'TDest list
  
  module RuntimeArray =
    let private typ = (typeof<_ list>).Assembly.GetType("Microsoft.FSharp.Collections.ArrayModule")
  
    let private mapMethod = typ.GetMethod("Map")
    let map<'TDest> (f: obj -> obj (* 'a -> 'TDest *)) (xs: obj (* 'a[] *), elemType: Type (* typeof<'a>*)) =
  
negative.code:     result :?> 'TDest seq
  
  module RuntimeList =
    let private typ = Runtime.getModule<_ list>("Microsoft.FSharp.Collections.ListModule")
  
    let private mapMethod = typ.GetMethod("Map")
    let map<'TDest> (f: obj -> obj (* 'a -> 'TDest *)) (xs: obj (* 'a list *), elemType: Type (* typeof<'a>*)) =
  