anchor.diff:    }
   }
   
  -/// Some text that appears as a root or as a child in a list of Html nodes
  -/// (mixed content). If an Html node has text as its only child, it's handled
  -/// as a special case.
  +/// A plain text view.
  +///
  +/// The framework needs to find the corresponding DOM element using a query on a
  +/// data-path attribute, so the text is actually rendered inside a <span>.
  +/// (We can't support mixed-content HTML directly and instead use a list of Elt and
  +/// Text views as the closest equivalent.)
  +///
  +/// However, if the parent's "inner" property is just a string, it's handled as a
  +/// special case and the Text class isn't used.
   class Text extends View {
     final String value;
     Text(this.value);
  
positive.code:   Map<Symbol, dynamic> get props => _props;
  }
  
  abstract class TagsApi {
    View Div({clazz, onClick, inner});
    View Span({clazz, onClick, inner});
  }
  
  class Tags implements TagsApi {
    noSuchMethod(Invocation inv) {
      if (inv.isMethod) {
  
negative.code: 
    Widget(this._props);
  
    /// Constructs the initial state when the Widget is mounted.
    /// (Stateful widgets should override.)
    State get firstState => null;
  
    /// Returns the currently rendered state. This should be treated as read-only.
    /// (Subclasses may want to override to change the return type.)
    State get state => _state;
  
    /// Returns the state that will be rendered on the next update.
    /// This is typically used to update the state due to an event.
    /// Accessing nextState automatically marks the Widget as dirty.
    /// (Subclasses may want to override to change the return type.)
    State get nextState {
      if (_nextState == null) {
        _nextState = _state.clone();
  