anchor.diff:  -export([read_tcp_stream/2,
            read_tcp_streams/1]).
   
  +-type packet_array() :: array(). % array:array({timestamp(), packet()})
   -type packet() :: #null{} | #eth{} | #ipv4{} | #ipv6{} | #tcp{}.
   -type host_port() :: {ip_address() | undefined, netport() | undefined}.
   -type tcp_flow() :: {Src::host_port(), Dst::host_port()}.
  --type tcp_flow_part() :: { {Src::host_port(), Dst::host_port()},
  -                           [packet() | 'not_tcp'] }.
  --type tcp_stream() :: {Forward::tcp_flow_part(),
  -                       Reverse::tcp_flow_part()}.
  +-type tcp_idx_part() :: { Flow::tcp_flow(),
  +                          [ Idx::non_neg_integer() ] }.
  +-type tcp_stream_idxs() :: {Forward::tcp_idx_part(),
  +                            Reverse::tcp_idx_part()}.
  +-type tcp_stream_part() :: { Flow::tcp_flow(),
  +                             {TS::non_neg_integer(),
  +                              Stream::binary()} }.
  +-type tcp_stream() :: {Forward::tcp_stream_part(),
  +                       Reverse::tcp_stream_part()}.
   
   -spec read_tcp_streams(FileName::string()) -> [tcp_stream()].
   read_tcp_streams(File) ->
  
positive.code: %% TCP Stream Reassembly
  %% =====================
  
  -spec read_tcp_stream({host_port(), [Idx::non_neg_integer()]},
                        packet_array()) ->
                               {StartTS::non_neg_integer(), Stream::binary()}.
  read_tcp_stream({{Src, Dst}, [P0Idx | Idxs]}, PacketArray) ->
  
negative.code: 
  -spec tcp_flow_parts({Forward::tcp_flow(),Reverse::tcp_flow()},
                       [Idx::non_neg_integer()],
                       packet_array()) -> tcp_stream_idxs().
  tcp_flow_parts({A,B}, Idxs, PacketArray) ->
      { {{A,B},
         [ I || I <- Idxs,
  