code: func (w *Writer) WriteHeader(t plumbing.ObjectType, size int64) error {
  	if !t.Valid() {
  		return plumbing.ErrInvalidType
  	}
  	if size < 0 {
  		return ErrNegativeSize
  	}
  
  	b := t.Bytes()
  	b = append(b, ' ')
  	b = append(b, []byte(strconv.FormatInt(size, 10))...)
  	b = append(b, 0)
  
  	defer w.prepareForWrite(t, size)
  	_, err := w.zlib.Write(b)
  
  	return err
  }
docs: // WriteHeader writes the type and the size and prepares to accept the object's
  // contents. If an invalid t is provided, plumbing.ErrInvalidType is returned. If a
  // negative size is provided, ErrNegativeSize is returned.