anchor.diff:    void initialize();
   
     /**
  -   * Returns a reference to a production with a [name].
  -   */
  -  Parser ref(String name) {
  -    return _undefined.putIfAbsent(name, () {
  -      return failure('Uninitalized production: $name').setable();
  -    });
  -  }
  -
  -  /**
  -   * Defines a production with a [name] and a [parser].
  +   * Defines a production with a [name] and a [parser]. Only call this method
  +   * from [initialize].
  +   *
  +   * The following example defines a list production that consumes
  +   * several elements separated by a comma.
  +   *
  +   *     def('list', ref('element').separatedBy(char(',')));
      */
     void def(String name, Parser parser) {
       if (_defined.containsKey(name)) {
  
positive.code:   }
  
    /**
     * Attaches an action [function] to an existing production [name].
     */
    void action(String name, dynamic function(Dynamic)) {
      redef(name, (parser) => parser.map(function));
    }
  
    /**
     * Returns a reference to a defined production named [name]. This method
     * should only be called for fully initialized instances.
     */
    Parser operator [](String name) => _defined[name];
  
negative.code:   }
  
    /**
     * Returns a reference to a production with a [name]. Only call this method
     * from [initialize].
     *
     * At the point of calling [ref] the production does not necessaryily have
     * to be defined yet. The constructor of the class makes sure to replace
     * and optimize references away before the grammar is run.
     */
    Parser ref(String name) {
      return _undefined.putIfAbsent(name, () {
        return failure('Uninitalized production: $name').setable();
      });
    }
  
    /**
     * Redefinies an existing production with a [name] and a [function]
     * producing a new parser. The code raises a [StateError] if [name]
     * is an undefined production. Only call this method from [initialize].
     *
     * The following example redefines the previously defined list production
     * by making it optional:
     *
     *     redef('list', (parser) => parser.optional());
     */
    void redef(String name, Parser function(Parser)) {
      if (!_defined.containsKey(name)) {
  