@Nullable
    private static <T> FactDefinition<T> factFromChange(FactExtractor<T> extractor, MemoryStateChange change, Change varChange) {
      if (varChange != null) {
        T newFact = extractor.extract(varChange.myNewType);
        T oldFact = extractor.extract(varChange.myOldType);
        if (!newFact.equals(oldFact)) {
          if (change.myInstruction instanceof EnsureInstruction &&
              ((EnsureInstruction)change.myInstruction).getProblem() instanceof ContractFailureProblem) {
            change = change.getPrevious();
          }
          return new FactDefinition<>(change, newFact, oldFact);
        }
      }
      return null;
    }
@Nullable
    private static <T> FactDefinition<T> factFromChange(FactExtractor<T> extractor, MemoryStateChange change, Change varChange)