def resolve(spec, partial_manifests = [])
      manifests = implementation(spec).resolve(partial_manifests)
      manifests or return
      enforce_consistency!(spec.dependencies, manifests)
      enforce_acyclicity!(manifests) unless cyclic
      manifests = sort(manifests)
      Resolution.new(spec.dependencies, manifests)
    end
def resolve(spec, partial_manifests = [])
      manifests = implementation(spec).resolve(partial_manifests)
      manifests or return
      enforce_consistency!(spec.dependencies, manifests)
      enforce_acyclicity!(manifests) unless cyclic
      manifests = sort(manifests)
      Resolution.new(spec.dependencies, manifests)
    end
Options:
   cyclic: truthy if the resolver should permit cyclic resolutions