anchor.diff:  
     Result<hir.Expression, List<ReportedCompilerError>> lowerToUnambiguous(
       ast.Expression expression, [
  -    Option<hir.CandyType> returnType = const Option.none(),
  +    Option<hir.CandyType> expressionType = const Option.none(),
  +    Option<hir.CandyType> returnType,
     ]) {
  -    final result = lower(expression, returnType);
  +    final result =
  +        lower(expression, expressionType, returnType ?? this.returnType);
       if (result is Error) return Error(result.error);
   
       assert(result.value.isNotEmpty);
  
positive.code:   factory _LocalContext.forProperty(
      QueryContext context,
      DeclarationId declarationId,
      Option<hir.CandyType> returnType,
    ) {
      return _LocalContext._(context, declarationId, returnType);
    }
  
    final QueryContext queryContext;
  
negative.code: 
    List<hir.Expression> requireLowering(
      ast.Expression expression, [
      Option<hir.CandyType> expressionType = const Option.none(),
      Option<hir.CandyType> returnType,
    ]) {
      final result =
          lower(expression, expressionType, returnType ?? this.returnType);
      if (result is Error) {
        throw _LoweringFailedException(result.error);
      }
  