anchor.diff:          match df with
           | :? DesigntimeFarkleWithMetadata<'T> as dfwm -> dfwm
           | _ -> {InnerDesigntimeFarkle = df; Metadata = GrammarMetadata.Default}
  -    interface DesigntimeFarkle<'T> with
  +    interface DesigntimeFarkle with
           member x.Name = x.InnerDesigntimeFarkle.Name
           member x.Metadata = x.Metadata
       interface DesigntimeFarkleWithMetadata with
           member x.InnerDesigntimeFarkle = upcast x.InnerDesigntimeFarkle
  +    interface DesigntimeFarkle<'T>
   
   [<NoComparison; ReferenceEquality>]
   /// <summary>A terminal symbol.</summary>
  
positive.code: 
  and internal Symbol = Choice<AbstractTerminal, Literal, AbstractNonterminal>
  
  /// <summary>An object representing a grammar created by Farkle.Builder.
  /// It can be converted to a <see cref="RuntimeFarkle{T}"/>.</summary>
  /// <remarks>User types must not implement this interface,
  /// or an error will be raised.</remarks>
  /// <typeparam name="T">The type of the objects this grammar generates.</typeparam>
  /// <seealso cref="DesigntimeFarkle"/>
  type DesigntimeFarkle<'T> = 
      inherit DesigntimeFarkle
  
  type internal DesigntimeFarkleWithMetadata =
      abstract InnerDesigntimeFarkle: DesigntimeFarkle
  
  type internal DesigntimeFarkleWithMetadata<'T> = {
      InnerDesigntimeFarkle: DesigntimeFarkle<'T>
  
negative.code:         | _ -> failwith "Using a custom derivative of the DesigntimeFarkle interface is not allowed."
      let append xs df = ImmutableList.add xs (specialize df)
  
  /// Functions to manipulate `DesigntimeFarkle`s.
  /// Keep in mind that only the metadata of the _topmost_
  /// designtime Farkle matter. Any other metadata changes will be disregarded.
  module DesigntimeFarkle =
  
      /// Sets a custom `GrammarMetadata` object to an untyped `DesigntimeFarkle`.
      let withMetadataUntyped metadata df =
          {new DesigntimeFarkleWithMetadata with
              member _.InnerDesigntimeFarkle = df
              member _.Name = df.Name
              member _.Metadata = metadata} :> DesigntimeFarkle
  
      /// Sets a custom `GrammarMetadata` object to a `DesigntimeFarkle<T>`.
      let withMetadata metadata df =
  