anchor.diff:  import '../shared/dartdoc_memcache.dart';
   import '../shared/task_scheduler.dart' show TaskTargetStatus;
   import '../shared/utils.dart' show contentType;
  +import '../shared/versions.dart' as shared_versions;
   
   import 'models.dart';
   import 'storage_path.dart' as storage_path;
  
positive.code:           .toList();
        versions.sort();
  
        void keepOneRuntimeVersion() {
          if (versions.isEmpty) return;
          final version = versions.removeLast();
          final index = completedList.lastIndexWhere(
              (entry) => entry.runtimeVersion == version.toString());
          if (index < 0) return;
          completedList.removeAt(index);
        }
  
        completedList.sort((a, b) => a.timestamp.compareTo(b.timestamp));
  
        keepOneRuntimeVersion(); // keeps current serving version
        keepOneRuntimeVersion(); // keeps previous serving version
      }
  
      // delete everything else
  
negative.code:       final List<DartdocEntry> completedList =
            await _listEntries(storage_path.entryPrefix(package, v));
        if (completedList.isEmpty) return null;
        final hasServing =
            completedList.any((entry) => entry.isServing && entry.hasContent);
        // don't remove non-serving entries if they are the only ones with content
        if (hasServing) {
          completedList.removeWhere((entry) => !entry.isServing);
        }
        completedList.sort((a, b) => -a.timestamp.compareTo(b.timestamp));
        return completedList.firstWhere((entry) => entry.hasContent,
            orElse: () => completedList.first);
      }
  
      DartdocEntry entry;
  