anchor.diff:            DecoratedType bound;
             bound = _variables.decoratedElementType(element.typeParameters[i],
                 create: true);
  -          _checkAssignment(
  -              bound,
  -              _variables.decoratedTypeAnnotation(_source, typeArguments[i]),
  -              null,
  -              hard: true);
  +          var argumentType =
  +              _variables.decoratedTypeAnnotation(_source, typeArguments[i]);
  +          if (argumentType == null) {
  +            _unimplemented(typeName,
  +                'No decorated type for type argument ${typeArguments[i]} ($i)');
  +          }
  +          _checkAssignment(bound, argumentType, null, hard: true);
           }
         }
       }
  
positive.code: 
    @override
    DecoratedType visitExpressionFunctionBody(ExpressionFunctionBody node) {
      _handleAssignment(_currentFunctionType.returnType, node.expression);
      return null;
    }
  
negative.code:   }
  
    @override
    DecoratedType visitComment(Comment node) {
      // Ignore comments.
      return null;
    }
  
    @override
    DecoratedType visitConditionalExpression(ConditionalExpression node) {
      _handleAssignment(_notNullType, node.condition);
      // TODO(paulberry): guard anything inside the true and false branches
  