code: func (e *Encoder) reflectMarshaler(v reflect.Value) bool {
  	if !v.Type().Implements(marshalerType) {
  		if v.Kind() != reflect.Ptr && v.CanAddr() && v.Addr().Type().Implements(marshalerType) {
  			v = v.Addr()
  		} else {
  			return false
  		}
  	}
  	m := v.Interface().(Marshaler)
  	data, err := m.MarshalBencode()
  	if err != nil {
  		panic(&MarshalerError{v.Type(), err})
  	}
  	e.write(data)
  	return true
  }
docs: // Returns true if the value implements Marshaler interface and marshaling was
  // done successfully.