anchor.diff:                   end,
                    D0,
                    OrdData)}.
  +
  +-spec packet(Idx::non_neg_integer(),
  +             Array::packet_array()) -> Packet::term().
  +packet(Idx, Array) ->
  +    {_TS, Pkt} = array:get(Idx, Array),
  +    Pkt.
  +
  +-spec timestamp(Idx::non_neg_integer(),
  +                Array::packet_array()) -> Timestamp::non_neg_integer().
  +timestamp(Idx, Array) ->
  +    {TS, _Pkt} = array:get(Idx, Array),
  +    TS.
  
positive.code: tcp_establishment_times(File) ->
      {PacketArray,_Count} = tcp_packet_array(File),
      Times = [ begin
                    {Atime,_} = array:get(A, PacketArray),
                    {Btime,_} = array:get(B, PacketArray),
                    {Flow, erlang:abs(Atime - Btime)}
                end
                || {Flow, [A, B]} <- tcp_flows(PacketArray)],
  
negative.code: tcp_flow_parts({A,B}, Idxs, PacketArray) ->
      { {{A,B},
         [ I || I <- Idxs,
                tcp_flow(packet(I, PacketArray)) =:= {A,B} ]},
        {{B, A},
         [ I || I <- Idxs,
                tcp_flow(packet(I, PacketArray)) =:= {B,A} ]}
      }.
  
  -spec tcp_flow(packet()) -> tcp_flow() | 'not_tcp'.
  