anchor.diff:      /// <summary>The associated <see cref="GrammarMetadata"/> object.</summary>
       abstract Metadata: GrammarMetadata
   
  +/// <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
  +
   /// <summary>The base, untyped interface of <see cref="Terminal{T}"/>.</summary>
   /// <seealso cref="Terminal{T}"/>
   type internal AbstractTerminal =
  
positive.code:         match df with
          | :? DesigntimeFarkleWithMetadata<'T> as dfwm -> dfwm
          | _ -> {InnerDesigntimeFarkle = df; Metadata = GrammarMetadata.Default}
      interface DesigntimeFarkle<'T> with
          member x.Name = x.InnerDesigntimeFarkle.Name
          member x.Metadata = x.Metadata
      interface DesigntimeFarkleWithMetadata with
          member x.InnerDesigntimeFarkle = upcast x.InnerDesigntimeFarkle
  
  [<NoComparison; ReferenceEquality>]
  /// <summary>A terminal symbol.</summary>
  
negative.code: 
  and internal Symbol = Choice<AbstractTerminal, Literal, AbstractNonterminal>
  
  type internal DesigntimeFarkleWithMetadata =
      abstract InnerDesigntimeFarkle: DesigntimeFarkle
      inherit DesigntimeFarkle
  
  type internal DesigntimeFarkleWithMetadata<'T> = {
      InnerDesigntimeFarkle: DesigntimeFarkle<'T>
  