anchor.diff:        if (_defined.containsKey(name)) {
           return _defined[name];
         } else {
  -        throw new StateError('Undefined production: $name');
  +        throw new UndefinedProductionError(name);
         }
       } else {
         return _undefined.putIfAbsent(name, () {
  
positive.code:     _delegate = ref('start');
      _undefined.forEach((name, parser) {
        if (!_defined.containsKey(name)) {
          throw new StateError('Undefined production: $name');
        }
        parser.set(_defined[name]);
      });
  
negative.code: 
    /**
     * Redefinies an existing production with a [name] and a [replacement]
     * parser or function producing a new parser. The code raises an
     * [UndefinedProductionError] 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:
  