code: func (f *recursiveFieldsPrinter) VisitKind(k *proto.Kind) {
  	for _, key := range k.Keys() {
  		v := k.Fields[key]
  		f.Writer.Write("%s\t<%s>", key, GetTypeName(v))
  		subFields := &recursiveFieldsPrinter{
  			Writer: f.Writer.Indent(indentPerLevel),
  		}
  		if err := subFields.PrintFields(v); err != nil {
  			f.Error = err
  			return
  		}
  	}
  }
docs: // VisitKind prints all its fields with their type, and then recurses
  // inside each of these (pre-order).