code: func marshalerEncoder(e *encodeState, v reflect.Value, opts encOpts) {
  	if v.Kind() == reflect.Ptr && v.IsNil() {
  		panic(fmt.Errorf("Cannot encode nil pointer"))
  	}
  
  	m, ok := v.Interface().(Marshaler)
  	if !ok {
  		panic(fmt.Errorf("Non-Marshaler passed to marshalerEncoder"))
  	}
  
  	b, err := m.MarshalTLS()
  	if err == nil {
  		_, err = e.Write(b)
  	}
  
  	if err != nil {
  		panic(err)
  	}
  }
docs: ///// Specific encoders below