anchor.diff:  open System.Collections.Generic
   open FSharp.Reflection
   
  +type MemberPath =
  +    { TypeName : string
  +      MemberName : string }
  +
  +type [<NoEquality; NoComparison>] InstantiationRule =
  +    | Constant of obj
  +    | Variable of (unit -> obj)
  +
  +type InstantiationRules =
  +    Map<MemberPath option, InstantiationRule>
  +
   [<RequireQualifiedAccess>]
   module Molder =
   
  -    type Path =
  -        string * string
  -
  -    type [<NoEquality; NoComparison>] InstantiationRule =
  -        | Constant of obj
  -        | Variable of (unit -> obj)
  -
  -    type InstantiationRules =
  -        Map<Path option, InstantiationRule>
  -
  +    // A primitive mold type.
       type Primitive =
           | Unit
           | Boolean
  
positive.code:           RequireIdentification = requireIdentification
            Random = Random randomizingSeed 
            InstantiationRules = instantiationRules
            Cache = Dictionary<Path option * Type, Mold ref> () }
  
      let makeEmpty () =
          make false false 0 Map.empty
  
negative.code:                 primitiveToInstance primitive molder
              | Tuple (_, name, elementMolds) ->
                  let ty = Type.GetType name
                  let elements = Array.map (fun ty' -> moldToInstance ty' molder) elementMolds
                  FSharpValue.MakeTuple (elements, ty)
              | Record (_, name, fieldMolds) ->
                  let ty = Type.GetType name
                  let fields = Array.map (snd >> fun ty' -> moldToInstance ty' molder) fieldMolds
                  FSharpValue.MakeRecord (ty, fields)
              | Union (_, name, caseMolds) ->
                  let ty = Type.GetType name
                  let caseInfos = FSharpType.GetUnionCases ty
                  let caseInfo = caseInfos.[0]
                  let (_, caseFields) = caseMolds.[0]
                  let caseFieldInstances = Array.map (fun ty' -> moldToInstance ty' molder) caseFields
                  FSharpValue.MakeUnion (caseInfo, caseFieldInstances)
              | Option (_, _) ->
                  None :> obj
  