code: func readBucket(f *os.File) (map[string]bucketItem, error) {
  	// If the file is empty, return an empty bucket.
  	ok, err := isEmpty(f)
  	if err != nil {
  		return nil, trace.Wrap(err)
  	}
  	if ok {
  		return map[string]bucketItem{}, nil
  	}
  
  	// The file is not empty, read it into a map.
  	var items map[string]bucketItem
  	bytes, err := ioutil.ReadAll(f)
  	if err != nil {
  		return nil, trace.ConvertSystemError(err)
  	}
  	err = utils.FastUnmarshal(bytes, &items)
  	if err != nil {
  		return nil, trace.Wrap(err)
  	}
  
  	return items, nil
  }
docs: // readBucket will read in the bucket and return a map of keys. The second return
  // value returns true to false to indicate if the file was empty or not.