def explicit_removed_dependency_names
      @explicit_removed_dependency_names ||= removed_dependency_names.reject do |name|
        lock_manifest = lock_manifests_index[name]
        spec.sources.include?(lock_manifest.source)
      end.to_set
    end
def explicit_removed_dependency_names
      @explicit_removed_dependency_names ||= removed_dependency_names.reject do |name|
        lock_manifest = lock_manifests_index[name]
        spec.sources.include?(lock_manifest.source)
      end.to_set
    end
A dependency which is deleted from the specfile will, in the general case,
   be removed conservatively. This means it might not actually be removed.
   But if the dependency originally declared a source which is now non-
   default, it must be removed, even if another dependency has a transitive
   dependency on the one that was removed (which is the scenario in which
   a conservative removal would not remove it). In this case, we must also
   remove it explicitly so that it can be re-resolved from the default
   source.