anchor.diff:           ki_srand = rand
            hs_renegotiation_info_cVerifyData = state.hs_renegotiation_info_cVerifyData
            hs_renegotiation_info_sVerifyData = state.hs_renegotiation_info_sVerifyData}
  +*)
   
   let invalidateSession ci state =
  -    let si = epochSI(ci.id_in) in //FIXME: which to choose? It is relevant because they might be misaligned, and we must chose the right one
  +    let si = epochSI(ci.id_in) // FIXME: which epoch to choose? Here it matters since they could be mis-aligned
       match si.sessionID with
  -    | None -> state
  -    | Some(sid) ->
  +    | [||] -> state
  +    | sid ->
           let sDB = SessionDB.remove state.sDB sid in
  -        {state with sDB = sDB}
  +        {state with sDB=sDB}
   
   type outgoing =
     | OutIdle of hs_state
  
positive.code:     | sid ->
          SessionDB.insert sDB sinfo.sessionID (sinfo, ms, role)
  
  let goToIdle state =
      let init_sessionInfo = null_sessionInfo state.poptions.minVer in
      match state.pstate with
  
negative.code: let makeCCSFragment ki b = makeFragment ki b
  
  let next_fragment ci state =
      match state.hs_outgoing with
      | [||] ->
          match state.pstate with
          | PSClient(cstate) ->
              match cstate with
              | 
  
  
      (* Assumptions: The buffers have been filled in the following order:
         1) hs_outgoing; 2) ccs_outgoing; 3) hs_outgoing_after_ccs
         We check 2) and 3) only if we are in a {C,S}WaitingToWrite state.
  