code: func (dec *ProtoDecoder) Decode(v interface{}) error {
  	msg, ok := v.(proto.Message)
  	if !ok {
  		return errors.New("Cannot decode into struct that doesn't implement proto.Message")
  	}
  
  	var err error
  
  	// derekperkins TODO: pipe reader directly to proto.Buffer
  	if _, err = dec.bBuf.ReadFrom(dec.r); err != nil {
  		return err
  	}
  	dec.pBuf.SetBuf(dec.bBuf.Bytes())
  
  	return dec.pBuf.Unmarshal(msg)
  }
docs: // Decode unmarshals an io.Reader into proto.Message v