anchor.diff:    @override
     List<ElementAnnotation> get metadata {
       if (_unlinkedTypedef != null) {
  -      return _metadata ??= _unlinkedTypedef.annotations
  -          .map((a) =>
  -              enclosingUnit.resynthesizerContext.buildAnnotation(this, a))
  -          .toList();
  +      return _metadata ??=
  +          _buildAnnotations(enclosingUnit, _unlinkedTypedef.annotations);
       }
       return super.metadata;
     }
  
positive.code:   @override
    List<ElementAnnotation> get metadata {
      if (_unlinkedExportNonPublic != null) {
        if (_metadata == null) {
          CompilationUnitElementImpl definingUnit =
              library.definingCompilationUnit as CompilationUnitElementImpl;
          return _metadata ??= _unlinkedExportNonPublic.annotations
              .map((a) =>
                  definingUnit.resynthesizerContext.buildAnnotation(this, a))
              .toList();
        }
      }
      return super.metadata;
    }
  
negative.code:   }
  
    /**
     * Return annotations for the given [unlinkedConsts] in the [unit].
     */
    List<ElementAnnotation> _buildAnnotations(
        CompilationUnitElementImpl unit, List<UnlinkedConst> unlinkedConsts) {
      int length = unlinkedConsts.length;
      if (length != 0) {
        List<ElementAnnotation> annotations = new List<ElementAnnotation>(length);
        ResynthesizerContext context = unit.resynthesizerContext;
        for (int i = 0; i < length; i++) {
          annotations[i] = context.buildAnnotation(this, unlinkedConsts[i]);
        }
        return annotations;
      } else {
        return const <ElementAnnotation>[];
      }
    }
  
    /**
     *  Updates cached values after an input changed.
     *
     *  Throws [FrozenHashCodeException] if not allowed.
  