code: func (dec *Decoder) isUnmarshalText(v reflect.Value) (bool, error) {
  	// check if implements the interface
  	m, ok := v.Interface().(encoding.TextUnmarshaler)
  	addr := v.CanAddr()
  	if !ok && !addr {
  		return false, nil
  	} else if addr {
  		return dec.isUnmarshalText(v.Addr())
  	}
  	// skip if the type is time.Time
  	n := v.Type()
  	if n.ConvertibleTo(typeTime) || n.ConvertibleTo(typeTimePtr) {
  		return false, nil
  	}
  	// return result
  	return true, m.UnmarshalText([]byte(dec.values[0]))
  }
docs: // isUnmarshalText returns a boolean and error. The boolean is true if the
  // field's type implements TextUnmarshaler, and false if not.