anchor.diff:          { messages with
               Warnings = message :: messages.Warnings; }
   
  +    //
  +    let setHeader header (precompilationState : PrecompilationState<'Nonterminal, 'Terminal>) =
  +        // Set the header contents.
  +        { fst precompilationState with
  +            Header = header; },
  +        snd precompilationState
  +
   
   /// Reserved terminal identifiers.
   /// Defining a terminal with any of these identifiers will cause an error message
  
positive.code:     // Copy some fields which don't need to be validated from the
      // original specification to the precompilation state.
      let precompilationState =
          { fst precompilationState with
              Header = spec.Header; },
          snd precompilationState
  
      (* NOTE :   In the code below, we fold *backwards* over the lists of declarations because they are all provided
                  in reverse order (compared to the way they were ordered in the parser specification file). *)
  
negative.code: 
      // Validate %type declarations of nonterminals.
      let precompilationState =
          // TODO : Change to use List.rev and State.List.iter
          (spec.NonterminalDeclarations, precompilationState)
          ||> List.foldBack (fun (declaredType, nonterminalId) precompilationState ->
              // Has this nonterminal been declared?
  