         skipping("main", "other")
         findingBatchingCompiling(removedInput)
         reading(deps: removedInput)
-        fingerprintsMissing(.topLevel(name: topLevelName), removedInput)
+        fingerprintsMissingOfTopLevelName(name: topLevelName, removedInput)
         schedulingPostCompileJobs
         linking
         skipped("main", "other")

          addDefsWithoutGraph
        }
        else {
          fingerprintChanged(.interface, "main")
          fingerprintChanged(.implementation, "main")

          let affectedInputs = removeInputFromInvocation
            ? ["other"]
            : [removedInput, "other"]
          for input in affectedInputs {
            trace {
              TraceStep(.interface, sourceFileProvide: "main")
              TraceStep(.interface, topLevel: "foo", input: "main")
              TraceStep(.implementation,
                        sourceFileProvide: input,
                        input: input == removedInput && afterRestoringBadPriors ? nil : input)
            }
          }
          let affectedInputsInBuild = affectedInputs.filter(inputs.contains)
          queuingLater(affectedInputsInBuild)
          schedulingInvalidated(affectedInputsInBuild)
          let affectedInputsInInvocationOrder = inputs.filter(affectedInputsInBuild.contains)
          findingBatchingCompiling(affectedInputsInInvocationOrder)
          reading(deps: affectedInputsInInvocationOrder)
        }
        schedLinking
      }

  ) -> [Diagnostic.Message]
  {
    fingerprintsChanged("main")
    fingerprintsMissingOfTopLevelName(name: "foo", "main")
    
    for input in affectedInputs {
      trace {
        TraceStep(.interface, sourceFileProvide: "main")
        TraceStep(.interface, topLevel: "foo", input: "main")
        TraceStep(.implementation, sourceFileProvide: input)
      }
    }
    queuingLater(affectedInputsInBuild)
    schedulingInvalidated(affectedInputsInBuild)
    findingBatchingCompiling(affectedInputsInInvocationOrder)
    reading(deps: "other")
    fingerprintsMissingOfTopLevelName(name: "bar", "other")
    
    let readingAnotherDeps = !removeInputFromInvocation // if removed, won't read it
    if readingAnotherDeps {
      reading(deps: removedInput)
      fingerprintsMissingOfTopLevelName(name: topLevelName, removedInput)
    }
  }

