anchor.diff:          .add(new _Subscription(linter, f, _getTimer(linter)));
     }
   
  +  void addTryStatement(LintRule linter, void Function(TryStatement) f) {
  +    _forTryStatement.add(new _Subscription(linter, f, _getTimer(linter)));
  +  }
  +
  +  void addTypeArgumentList(LintRule linter, void Function(TypeArgumentList) f) {
  +    _forTypeArgumentList.add(new _Subscription(linter, f, _getTimer(linter)));
  +  }
  +
     void addTypeName(LintRule linter, void Function(TypeName) f) {
       _forTypeName.add(new _Subscription(linter, f, _getTimer(linter)));
  +  }
  +
  +  void addTypeParameter(LintRule linter, void Function(TypeParameter) f) {
  +    _forTypeParameter.add(new _Subscription(linter, f, _getTimer(linter)));
  +  }
  +
  +  void addTypeParameterList(
  +      LintRule linter, void Function(TypeParameterList) f) {
  +    _forTypeParameterList.add(new _Subscription(linter, f, _getTimer(linter)));
     }
   
     void addVariableDeclaration(
  
positive.code:   }
  
    @override
    void visitFieldDeclaration(FieldDeclaration node) {
      _runSubscriptions(node, registry._forFieldDeclaration);
      super.visitFieldDeclaration(node);
  
negative.code:   }
  
    @override
    void visitDottedName(DottedName node) {
      _runSubscriptions(node, registry._forDottedName);
      super.visitDottedName(node);
    }
  
    @override
    void visitDoubleLiteral(DoubleLiteral node) {
      _runSubscriptions(node, registry._forDoubleLiteral);
      super.visitDoubleLiteral(node);
    }
  
    @override
    void visitEmptyFunctionBody(EmptyFunctionBody node) {
      _runSubscriptions(node, registry._forEmptyFunctionBody);
      super.visitEmptyFunctionBody(node);
    }
  
    @override
    void visitEmptyStatement(EmptyStatement node) {
      _runSubscriptions(node, registry._forEmptyStatement);
      super.visitEmptyStatement(node);
  