// Code generated by golang.org/x/tools/cmd/bundle.
//   $ 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
}

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

type prefixt int

const prefixc = 1

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

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