//go:build tag
// +build tag

// Code generated by golang.org/x/tools/cmd/bundle. DO NOT EDIT.
//   $ bundle

// The package doc comment
//

package dest

import (
	"fmt"
	. "fmt"
	_ "fmt"
	renamedfmt "fmt"
	renamedfmt2 "fmt"

	"domain.name/importdecl"
)

// init functions are not renamed
func init() { prefixfoo() }

// Type S.
type prefixS struct {
	prefixt
	u int
} /* multi-line
comment
*/

// non-associated comment

/*
	non-associated comment2
*/

// Function bar.
func prefixbar(s *prefixS) {
	fmt.Println(s.prefixt, s.u) // comment inside function
}

// file-end comment

type prefixt int // type1

// const1
const prefixc = 1 // const2

func prefixfoo() {
	fmt.Println(importdecl.F())
}

// zinit
const (
	prefixz1 = iota // z1
	prefixz2        // z2
) // zend

func prefixbaz() {
	renamedfmt.Println()
	renamedfmt2.Println()
	Println()
}
