code: func Unmarshal(data []byte, v interface{}) (err error) {
  	buf := bytes.NewBuffer(data)
  	e := Decoder{r: buf}
  	err = e.Decode(v)
  	if err == nil && buf.Len() != 0 {
  		err = ErrUnusedTrailingBytes{buf.Len()}
  	}
  	return
  }
docs: // Unmarshal the bencode value in the 'data' to a value pointed by the 'v'
  // pointer, return a non-nil error if any.