code: public static <K, V, T extends Map<K, V>> T unmarshallMap(ObjectInput in, MapBuilder<K, V, T> builder) throws IOException, ClassNotFoundException {
        final int size = unmarshallSize(in);
        if (size == NULL_VALUE) {
           return null;
        }
        final T map = Objects.requireNonNull(builder, "MapBuilder must be non-null").build(size);
        for (int i = 0; i < size; i++) //noinspection unchecked
           map.put((K) in.readObject(), (V) in.readObject());
        return map;
     }
docs: Unmarshall the {@link Map}.
  <p>
  If the marshalled map is {@code null}, then the {@link MapBuilder} is not invoked.
  
  @param in      {@link ObjectInput} to read.
  @param builder {@link MapBuilder} to create the concrete {@link Map} implementation.
  @return The populated {@link Map} created by the {@link MapBuilder} or {@code null}.
  @throws IOException            If any of the usual Input/Output related exceptions occur.
  @throws ClassNotFoundException If the class of a serialized object cannot be found.
  @see #marshallMap(Map, ObjectOutput)