readUserList :: IO Word8 -> (Int -> IO [Word8]) -> IO Word16 -> IO Int -> (Int -> IO String) -> Inbound.Header -> IO Inbound.InboundMessage
readUserList readByte readBytes readShort readInt readText header =
  do
    let numberOfUsers = Inbound.messageRefNumber header
    userList <- sequence $ replicate numberOfUsers (readSingleUser readByte readBytes readShort readInt readText)
    return . Inbound.UserListMessage $ Inbound.UserListing userList
readUserList :: IO Word8 -> (Int -> IO [Word8]) -> IO Word16 -> IO Int -> (Int -> IO String) -> Inbound.Header -> IO Inbound.InboundMessage
readUserList readByte readBytes readShort readInt readText header =
  do
    let numberOfUsers = Inbound.messageRefNumber header
    userList <- sequence $ replicate numberOfUsers (readSingleUser readByte readBytes readShort readInt readText)
    return . Inbound.UserListMessage $ Inbound.UserListing userList
readUserList readByte readBytes readShort readInt readText header =
  do
    let numberOfUsers = Inbound.messageRefNumber header
    userList <- sequence $ replicate numberOfUsers (readSingleUser readByte readBytes readShort readInt readText)
    return . Inbound.UserListMessage $ Inbound.UserListing userList