anchor.diff:  type ProductionBuilder(members) =
       inherit AbstractProductionBuilder<ProductionBuilder>()
       override __.Append(sym) = ProductionBuilder(Symbol.append members sym)
  -    member __.Extend(df: DesigntimeFarkle<'T1>) = ProductionBuilder<'T1>(ImmutableList.add members (Symbol.specialize df), members.Count)
  +    member __.Extend(df: DesigntimeFarkle<'T1>) = ProductionBuilder<'T1>(Symbol.append members df, members.Count)
       member x.Finish(fFuseThunk) = x.FinishRaw(fun _ -> fFuseThunk ())
       /// <summary>Like <c>Finish</c>, but the given function accepts
       /// an array of all the production's parts as objects.</summary>
  
positive.code:         prod.SetProductions(productions)
          prod
      interface Nonterminal with
          member x.Id = x.Id
          member x.Productions = x.Productions.ValueOrDefault []
      interface DesigntimeFarkle with
          member x.Name = x._Name
      interface DesigntimeFarkle<'T>
  
  /// <summary>A production. Productions are parts of <see cref="Nonterminal{T}"/>s.</summary>
  
negative.code: type ProductionBuilder<'T1, 'T2>(members, idx1, idx2) =
      inherit AbstractProductionBuilder<ProductionBuilder<'T1, 'T2>>()
      override __.Append(sym) = ProductionBuilder<_, _>(Symbol.append members sym, idx1, idx2)
      member __.Extend(df: DesigntimeFarkle<'T3>) = ProductionBuilder<'T1, 'T2, 'T3>(Symbol.append members df, idx1, idx2, members.Count)
      member __.Finish(f: 'T1 -> 'T2 -> 'TOutput) : Production<'TOutput> = {
          Members = members.ToImmutableArray()
          Fuse = fun arr -> f (arr.[idx1] :?> _) (arr.[idx2] :?> _) |> box
  