anchor.diff:        return Some(result.value);
       } else if (declarationId.isProperty) {
         final propertyAst = getPropertyDeclarationAst(context, declarationId);
  -      if (propertyAst.initializer == null) return None();
  +      assert(propertyAst.initializer != null);
   
         final result = PropertyContext.lowerProperty(context, declarationId);
         // ignore: only_throw_errors, Iterables of errors are also handled.
         if (result is Error) throw result.error;
         return Some(Tuple2([result.value.first], result.value.second));
  +    } else {
  +      throw CompilerError.unsupportedFeature(
  +        'Unsupported body.',
  +        location: ErrorLocation(
  +          declarationId.resourceId,
  +          getDeclarationAst(context, declarationId).span,
  +        ),
  +      );
  +    }
  +  },
  +);
  +final hasBody = Query<DeclarationId, bool>(
  +  'hasBody',
  +  provider: (context, declarationId) {
  +    if (!doesDeclarationExist(context, declarationId)) {
  +      // Synthetic function
  +      return declarationId.isFunction;
  +    }
  +
  +    if (declarationId.isFunction) {
  +      final functionAst = getFunctionDeclarationAst(context, declarationId);
  +      return functionAst.body != null;
  +    } else if (declarationId.isProperty) {
  +      final propertyAst = getPropertyDeclarationAst(context, declarationId);
  +      return propertyAst.initializer != null;
       } else {
         throw CompilerError.unsupportedFeature(
           'Unsupported body.',
  
positive.code:             getFunctionDeclarationHir(queryContext, declarationId);
          if (functionHir.isStatic) return;
        } else if (declarationId.isProperty) {
          final propertyHir =
              getPropertyDeclarationHir(queryContext, declarationId);
          if (propertyHir.isStatic) return;
        } else {
          throw CompilerError.unsupportedFeature(
            "Tried lowering an identifier in a body that's neither in a function nor in a property.",
  
negative.code:                     moduleIdToDeclarationId(queryContext, it.virtualModuleId)))
                  .expand((trait) => trait.innerDeclarationIds)
                  .where((it) => it.isFunction)
                  .where((it) => hasBody(queryContext, it)));
            }))
            .where((id) => id.simplePath.last.nameOrNull == name)
            .mapNotNull((id) {
  