code: func (scv *statCacheValue) marshalBinary() ([]byte, error) {
  	if scv == nil {
  		return nil, errors.New("Can not marshal from a nil stat cache value")
  	}
  	binBr, _ := scv.Result.BlobRef.MarshalBinary()
  	// Blob size fits on 4 bytes when binary encoded
  	data := make([]byte, 0, len(scv.Fingerprint)+1+4+1+len(binBr))
  	buf := bytes.NewBuffer(data)
  	_, err := buf.WriteString(string(scv.Fingerprint))
  	if err != nil {
  		return nil, fmt.Errorf("Could not write fingerprint %v: %v", scv.Fingerprint, err)
  	}
  	err = buf.WriteByte('|')
  	if err != nil {
  		return nil, fmt.Errorf("Could not write '|': %v", err)
  	}
  	err = binary.Write(buf, binary.BigEndian, int32(scv.Result.Size))
  	if err != nil {
  		return nil, fmt.Errorf("Could not write blob size %d: %v", scv.Result.Size, err)
  	}
  	err = buf.WriteByte('|')
  	if err != nil {
  		return nil, fmt.Errorf("Could not write '|': %v", err)
  	}
  	_, err = buf.Write(binBr)
  	if err != nil {
  		return nil, fmt.Errorf("Could not write binary blobref %q: %v", binBr, err)
  	}
  	return buf.Bytes(), nil
  }
docs: // marshalBinary returns a more compact binary
  // representation of the contents of scv.