> setup; reload

$ copy-file changes/A1.scala A.scala
$ copy-file changes/B.scala B.scala
# B depends on A
# 1 iteration
> compile

$ copy-file changes/A2.scala A.scala

# will successfully compile A.scala in the first step but fail to compile B.scala in the second
# because type of A.x changed.  The original classes should be restored after this failure.
# 2 iterations, but none are recorded in the Analysis
-> compile

# the class file for C should be deleted:
#  it was only added by A2, but compilation hasn't succeeded yet
$ absent target/classes/C.class


$ copy-file changes/A1.scala A.scala
# if the classes were correctly restored, another compilation shouldn't be necessary
> compile
# so, there should only be the original 1 iteration recorded in the Analysis
> checkIterations 1
