anchor.diff:                    {TS, {call, Pid, {append, Page, will_fail, Else}}}
             end,
       [New|add_LPN_to_append_calls(Rest)];
  +add_LPN_to_append_calls([{TS, {call, Pid, {OpName, LPN}}}|Rest])
  +  when OpName == fill; OpName == trim ->
  +    Res = trace_lookahead_pid(Pid, Rest),
  +    New = case Res of
  +              ok ->
  +                  {TS, {call, Pid, {OpName, LPN, will_be, ok}}};
  +              Else ->
  +                  {TS, {call, Pid, {OpName, LPN, will_fail, Else}}}
  +          end,
  +    [New|add_LPN_to_append_calls(Rest)];
   add_LPN_to_append_calls([X|Rest]) ->
       [X|add_LPN_to_append_calls(Rest)];
   add_LPN_to_append_calls([]) ->
  
positive.code:     BadFilter = fun(bad) -> true;
                     (Bad) when is_tuple(Bad), element(1, Bad) == bad -> true;
                     (_)   -> false end,
      BadReads = [{TS1, TS2, lists:filter(BadFilter, Facts)} ||
                     {TS1, TS2, Facts} <- Reads,
                     Fact <- Facts, BadFilter(Fact)],
  
      %% Desired properties
      AllCallsFinish = eqc_temporal:is_false(eqc_temporal:all_future(Calls)),
      NoAppendDuplicates = (DuplicateLPNs == []),
      NoBadReads = (BadReads == []),
  
      ?WHENFAIL(begin
      %% ?QC_FMT("*Events: ~p\n", [Events]),
      ?QC_FMT("*DuplicateLPNs: ~p\n", [DuplicateLPNs]),
      ?QC_FMT("*Mods: ~p\n", [Mods]),
      ?QC_FMT("*readsUmods: ~p\n", [eqc_temporal:union(Reads, Mods)]),
      %% ?QC_FMT("*DreadUDmod: ~p\n", [eqc_temporal:unions([DoneRead, DoneMod,
      %%                                                    StartRead, StartMod])]),
      ?QC_FMT("*BadReads: ~p\n", [BadReads])
      end,
      conjunction(
        [
         {all_calls_finish, AllCallsFinish},
         {no_append_duplicates, NoAppendDuplicates},
         {no_bad_reads, NoBadReads},
         %% If you want to see PULSE causing crazy scheduling, then
         %% change one of the "true orelse" -> "false orelse" below.
         %% {bogus_no_gaps,
  
negative.code:     [{Beginning, to, Next-1}|range_ify(Else, Else+1, T)];
  range_ify(Beginning, Next, []) ->
      [{Beginning, to, Next-1}].
  
  filter_relation_facts(FilterFun, R) ->
      [{TS1, TS2, lists:filter(FilterFun, Facts)} || {TS1, TS2, Facts} <- R].
          %% {TS1, TS2, Facts} <- Reads, Fact <- Facts, BadFilter(Fact)],
  
  log_make_call(Tag) ->
      log_make_call(self(), Tag).
  