Be resilient to a non-decreasing clock in BlazeRuntime#recordLastExecutionTime. Also add @Nullable annotations as appropriate.

Fixes #394.

--
MOS_MIGRATED_REVID=101685096
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/FilesystemValueChecker.java b/src/main/java/com/google/devtools/build/lib/skyframe/FilesystemValueChecker.java
index 9e00da1..3c414d8 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/FilesystemValueChecker.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/FilesystemValueChecker.java
@@ -67,20 +67,21 @@
       SkyFunctionName.functionIs(SkyFunctions.ACTION_EXECUTION);
 
   private final TimestampGranularityMonitor tsgm;
+  @Nullable
   private final Range<Long> lastExecutionTimeRange;
   private final Supplier<Map<SkyKey, SkyValue>> valuesSupplier;
   private AtomicInteger modifiedOutputFilesCounter = new AtomicInteger(0);
   private AtomicInteger modifiedOutputFilesIntraBuildCounter = new AtomicInteger(0);
 
   FilesystemValueChecker(Supplier<Map<SkyKey, SkyValue>> valuesSupplier,
-      TimestampGranularityMonitor tsgm, Range<Long> lastExecutionTimeRange) {
+      TimestampGranularityMonitor tsgm, @Nullable Range<Long> lastExecutionTimeRange) {
     this.valuesSupplier = valuesSupplier;
     this.tsgm = tsgm;
     this.lastExecutionTimeRange = lastExecutionTimeRange;
   }
 
   FilesystemValueChecker(final MemoizingEvaluator evaluator, TimestampGranularityMonitor tsgm,
-      Range<Long> lastExecutionTimeRange) {
+      @Nullable Range<Long> lastExecutionTimeRange) {
     this.tsgm = tsgm;
     this.lastExecutionTimeRange = lastExecutionTimeRange;