guava/src/com/google/common/collect/Serialization.java
static <K, V> void writeMap(Map<K, V> map, ObjectOutputStream stream) throws IOException {
    stream.writeInt(map.size());
    for (Map.Entry<K, V> entry : map.entrySet()) {
      stream.writeObject(entry.getKey());
      stream.writeObject(entry.getValue());
    }
  }
static <K, V> void writeMap(Map<K, V> map, ObjectOutputStream stream) throws IOException {
    stream.writeInt(map.size());
    for (Map.Entry<K, V> entry : map.entrySet()) {
      stream.writeObject(entry.getKey());
      stream.writeObject(entry.getValue());
    }
  }
Stores the contents of a map in an output stream, as part of serialization. It does not support
concurrent maps whose content may change while the method is running.

<p>The serialized output consists of the number of entries, first key, first value, second key,
second value, and so on.