code: func (out *DataOutputImpl) WriteStringStringMap(m map[string]string) error {
  	if m == nil {
  		return out.WriteInt(0)
  	}
  	err := out.WriteInt(int32(len(m)))
  	if err != nil {
  		return err
  	}
  	// enforce key order during serialization
  	var keys []string
  	for k, _ := range m {
  		keys = append(keys, k)
  	}
  	sort.Strings(keys)
  	for _, k := range keys {
  		v := m[k]
  		// for k, v := range m {
  		err = out.WriteString(k)
  		if err == nil {
  			err = out.WriteString(v)
  		}
  		if err != nil {
  			return err
  		}
  	}
  	return nil
  }
docs: /*
  Writes a string map.
  
  First the size is written as an int32, followed by each key-value
  pair written as two consecutive strings.
  */