code: func (enc *Encoder) indirect(v reflect.Value) reflect.Value {
  	rv := v
  	for rv.Kind() == reflect.Ptr {
  		rv = rv.Elem()
  	}
  	return rv
  }
docs: // indirect dereferences pointers until it reaches a non-pointer.  This allows
  // transparent encoding through arbitrary levels of indirection.