anchor.diff:      }
       _pattern = _becomeParentOf(pattern);
     }
  +
  +  Literal get pattern => _pattern;
  +
  +  @override
  +  Token get beginToken => _pattern.beginToken;
  +
  +  @override
  +  Iterable get childEntities => new ChildEntities()
  +    ..add(_pattern);
  +
  +  @override
  +  Token get endToken => _pattern.endToken;
  +
  +  @override
  +  accept(AstVisitor visitor) => visitor.visitPattern(this);
  +
  +  @override
  +  void visitChildren(AstVisitor visitor) {
  +    _safelyVisitChild(_pattern, visitor);
  +  }
   }
   
   class PatternGuard extends AstNode {
  
positive.code: 
    PatternGuard(
        this.ifKeyword,
        this.leftParanthesis,
        Expression condition,
        this.rightParanthesis) {
      _condition = _becomeParentOf(condition);
    }
  }
  
  
negative.code:     _expression = _becomeParentOf(expression);
      _clauses = _becomeParentOf(clauses);
    }
  
    Expression get expression => _expression;
  
    NodeList<MatchClause> get clauses => _clauses;
  }
  
  class MatchClause extends AstNode {
  