anchor.diff:    Future<List<int>> getModificationTimes(List<Source> sources) async {
       return sources.map((source) {
         String path = source.fullName;
  -      return _overlayModificationStamps[path] ??
  +      return _overlays[path]?.modificationStamp ??
             baseProvider.getFile(path).modificationStamp;
       }).toList();
     }
  
positive.code:   @override
    File renameSync(String newPath) {
      File newFile = _file.renameSync(newPath);
      if (provider.hasOverlay(path)) {
        provider.setOverlay(
          newPath,
          content: provider._getOverlayContent(path)!,
          modificationStamp: provider._getOverlayModificationStamp(path)!,
        );
        provider.removeOverlay(path);
      }
      return _OverlayFile(provider, newFile);
    }
  
  
negative.code: 
    /// Return `true` if there is an overlay associated with the file at the given
    /// [path].
    bool hasOverlay(String path) => _overlays.containsKey(path);
  
    /// Remove any overlay of the file at the given [path]. The state of the file
    /// in the base resource provider will not be affected.
    bool removeOverlay(String path) {
      return _overlays.remove(path) != null;
    }
  
    /// Overlay the content of the file at the given [path]. The file will appear
  