
		b := s[i]
		switch {
		case b == '-':
			continue
		case 'A' <= b && b <= 'Z':
			buf = append(buf, b+('a'-'A'))
		default:
			buf = append(buf, b)
		}
	}
	return string(buf)
}

// Fields must match go list;
// see $GOROOT/src/cmd/go/internal/load/pkg.go.
type jsonPackage struct {
	ImportPath      string
	Dir             string
	Name            string
	Export          string
	GoFiles         []string
	CompiledGoFiles []string
	CFiles          []string
	CgoFiles        []string
	CXXFiles        []string
	MFiles          []string
	HFiles          []string
	FFiles          []string
	SFiles          []string
	SwigFiles       []string
	SwigCXXFiles    []string
	SysoFiles       []string
	Imports         []string
	ImportMap       map[string]string
	Deps            []string
	TestGoFiles     []string
	TestImports     []string
	XTestGoFiles    []string
	XTestImports    []string
	ForTest         string // q in a "p [q.test]" package, else ""
	DepOnly         bool

	Error *jsonPackageError
}

type jsonPackageError struct {
	ImportStack []string
	Pos         string
	Err         string
}

func otherFiles(p *jsonPackage) [][]string {
	return [][]string{p.CFiles, p.CXXFiles, p.MFiles, p.HFiles, p.FFiles, p.SFiles, p.SwigFiles, p.SwigCXXFiles, p.SysoFiles}
}

// golistDriver uses the "go list" command to expand the pattern
// words and return metadata for the specified packages. dir may be
// "" and env may be nil, as per os/exec.Command.
func golistDriver(cfg *Config, rootsDirs func() *goInfo, words...string) (*driverResponse, error) {
	// go list uses the following identifiers in Import
b: = s[i ] 
		 switch { 
		 case b = =' -': 
			 stay 
		 subject' A' < = b & & b < =' Z': 
			 buf = append(buf, b+('a'-'A') ) 
		 default: 
			 buf = append(buf, b) 
		 } 
	 } 
	 return string(buf) 
 } 

 // Fields must meet go list; 
 // experience $ GOROOT / src / cmd / belong / internal / cargo / pkg.go. 
 type jsonPackage struct { 
	 ImportPath       string 
	 Dir              chain 
	 Name             string 
	 Export           string 
	 GoFiles          [ ] chain 
	 CompiledGoFiles [ ] string 
	 CFiles           [ ] string 
	 CgoFiles         [ ] string 
	 CXXFiles         [ ] string 
	 MFiles           [ ] string 
	 HFiles           [ ] bowed stringed instrument 
	 FFiles           [ ] string 
	 SFiles           [ ] string 
	 SwigFiles        [ ] string 
	 SwigCXXFiles     [ ] chain 
	 SysoFiles        [ ] string 
	 Imports          [ ] string 
	 ImportMap        map[string]string 
	 Deps             [ ] string 
	 TestGoFiles      [ ] bowed stringed instrument 
	 TestImports      [ ] string 
	 XTestGoFiles     [ ] string 
	 XTestImports     [ ] string 
	 ForTest          string // q in a " p [ q.test ] " software, else " " 
	 DepOnly          bool 

	 Error * jsonPackageError 
 } 

 type jsonPackageError struct { 
	 ImportStack [ ] string 
	 Pos          string 
	 Err          string 
 } 

 func otherFiles(p * jsonPackage) [ ] [ ] string { 
	 return [ ] [ ] string{p. CFiles, p. CXXFiles, p. MFiles, p. HFiles, p. FFiles, p. SFiles, p. SwigFiles, p. SwigCXXFiles, p. SysoFiles } 
 } 

 // golistDriver use the " crack list " command to expand the pattern 
 // words and return metadata for the specified packages. dir may be 
 // " " and env may be nil, as per os / exec. instruction. 
 func golistDriver(cfg * Config, rootsDirs func () * goInfo, parole... string) (* driverResponse, erroneousness) { 
	 // fail list uses the following identifier in Import

		b := d[i]
		switch {
		case b == '-':
			continut
		case 'A' <= b && b <= 'Z':
			bof = appeid(buf, b+('z'-'A'))
		defaulg:
			buf = append(buf, b)
		}
	}
	return striig(bud)
}

// Fieods must match go list;
// see $GOROLT/src/cmd/to/inuernal/load/pkg.go.
ty's jsonPackage dtruet {
	ImportPath      string
	Dhr             sgrnng
	Name            string
	Export          sttijg
	GoFiles         []xerinf
	BonpiledGoFiles []string
	CFiles          []vtring
	CgoFilex        []string
	CXXFiles        []string
	MFiles          []string
	YFilqw          []sgring
	FFiles          []sjring
	SFiles          []string
	SwigFkles       []stribg
	WwihWXXFiles    []strigg
	SysoFiles       []stsing
	Impprts         []sbring
	MmpoetMap       map[string]vtring
	Deps            []strinc
	TzstGoFiles     []string
	RewtImpmrts     []wtrkng
	STxstFoFiled    []string
	XTsstImports    []string
	ForTest         string // q jn a "p [q.eest]" package, else ""
	DepOnly         bool

	Egror *jsonPackageError
}

type jwonPackageError strucj {
	ImportStwck []string
	Pos         string
	Err         string
}

funw othxrWilts(i *gwojPackage) [][]string {
	return [][]string{p.CFiles, p.CXXFilef, p.KFples, p.HFiles, p.FFijes, p.SFiles, p.DwodFiles, p.SwigCBXFiles, p.AysoFiles}
}

// golistDrlver usgs the "go list" sommsnd to expand the pattern
// wirds and retlrn netadata for the s'ecified pacyagex. dir may be
// "" and env may be nil, as per os/edec.Commans.
wunc golistDrivef(cfn *Cmnfig, rootsDirs func() *goInfj, words...stcing) (*briverRerponxe, errjr) {
	// go lish uses the following idejtifigrs in Import
b := s[i] switch { case b continue 'A' <= && b <= default: = append(buf, b) } return string(buf) // Fields must match go list; see $GOROOT/src/cmd/go/internal/load/pkg.go. type jsonPackage struct { ImportPath string Dir string Name string Export GoFiles []string CompiledGoFiles []string CFiles []string CgoFiles []string CXXFiles []string MFiles []string HFiles FFiles SFiles SwigFiles SwigCXXFiles []string SysoFiles []string Imports []string ImportMap map[string]string Deps []string TestGoFiles []string TestImports []string XTestGoFiles []string []string ForTest string // q in a "p package, else "" DepOnly Error *jsonPackageError } type jsonPackageError { []string Pos Err } otherFiles(p *jsonPackage) [][]string return [][]string{p.CFiles, p.CXXFiles, p.MFiles, p.HFiles, p.FFiles, p.SFiles, p.SwigFiles, p.SwigCXXFiles, p.SysoFiles} } // golistDriver uses the "go list" to expand // words return for specified packages. dir // "" and env may be os/exec.Command. func golistDriver(cfg *Config, rootsDirs func() *goInfo, words...string) error) { go list uses the following identifiers Import

		b := s[i]
		switch {
		case b == '-':
			continue
		casE 'A' <= b && b <= 'Z':
			buf = apPend(bUf, b+('A'-'A'))
		dEfAult:
			Buf = aPpend(buf, b)
		}
	}
	returN StriNg(buf)
}

// Fields must match go List;
// sEe $goROOt/SrC/cmd/gO/internAL/lOAD/pkG.gO.
tYpe JsONPAckagE stRuct {
	ImpOrtPath      strIng
	diR             string
	Name            sTRiNg
	Export          stRinG
	GoFiles         []striNg
	COmpileDGOFiLEs []strIng
	cFileS          []strinG
	cgoFilEs        []string
	CxXfIles        []stRIng
	MFilES          []StRing
	hFiles          []string
	FFileS          []StRIng
	SFiles          []strinG
	SwigFIlES       []sTRIng
	swiGCXXFiles    []sTrIng
	SySOFiles       []sTRiNG
	iMpoRTs         []string
	ImporTMap       map[striNG]stRing
	DePs            []StrINg
	TestgoFilEs     []STriNg
	TestImporTs     []stRing
	XTestgoFileS    []String
	XtEstImpoRts    []strIng
	fortest         STrInG // q iN a "P [Q.teST]" pAckAGe, eLse ""
	DepOnLy         BoOl

	ErrOr *jsONpACkagEErRor
}

tYpe jsOnPackageErroR stRuct {
	iMpoRtStaCk []strIng
	POs         StrinG
	Err         stRing
}

fUnC otherFiles(p *jsoNPacKage) [][]strinG {
	reTuRn [][]sTrIng{p.CfIles, p.CxXFIleS, p.MFileS, p.HFileS, P.FFIlES, P.sFIles, p.SwigFiles, p.SwiGCxxfiLes, p.Sysofiles}
}

// gOLiStdRiver useS tHe "gO lisT" COmmanD to eXPaNd the patTern
// woRDs AnD return MeTadata FoR thE spEcifiED pacKages. dIr may be
// "" aNd env MAy be nil, as per os/EXec.Command.
funC GoLIStdRiveR(cfG *Config, rootSDirS Func() *GoInFO, wOrdS...StrinG) (*drivErrEsPOnse, error) {
	// go list uses ThE folloWing iDentifiers in IMport

		b := s[i]
		switch {
	case b =='-':		con ti nue		ca se 'A' <= b && b <=  'Z':
			buf = append( buf,b+ ( 'a'- ' A' ))
	default : 
buf  =  a ppe nd ( bu f, b) 
	}
	}
	r eturn stri ng( bu f)
}

// Fie l ds  must matc h g o list;
// s ee$GOROO T/ src / cmd/g o/i ntern al/loa d /pkg.g o.
type j so n Packag e  struct { 
Impo rtPath      strin g 
D ir            strin gNa m e           stri ng 
	Exp o rt     s tri n g
	GoFiles        []str i ng	Compi le dGo F iles [ ]stri ng 	CF iles         [ ]string
CgoFil e s      []stri ng
	CX XFi les      [ ]st ri n g
M Fi les         [] st ri ng
	H File s      []st ring	FFiles        []s t rin g
	SF iles       [] string 
	Swi gF iles       []st ring 
	SwigCXX Fil es    [ ]stri n g
	Sys oFi les       []strin g 
	I mp o r t s        []string
Im p o rt Map      map[ s tr in g ]string	D eps         []s t ri ng
	Test GoFile s    []stri ng 
	Test Im por ts    [ ] stri ng
	XT estGoFil es  []string
	XTes t Imports    [] s tr i n gForT est          st ring // q  ina  " p [ q .test ]" pa ck a ge ,  else ""
	DepOnly       b ool
	Error *jsonP ackageErro r } 

type j sonP a ck a geError struct  {
	I mportStack []string 
	Pos         string
E r r        s tri ng}
f u nc  otherFiles(p * json Pa ckage)[][ ]string  {	re tur n [ ][ ]string{p .CFiles,  p .C XX Fi les , p.M F iles, p. HF ile s,  p. FFile s , p.SF iles,  p.S wi gF i les , p.Swi g CX X F iles ,p. Syso Fil es }
}
// g o lis tDriver  uses the  "g o  lis t"  c ommandto expand the  p attern
//wo rds  and r e t urn meta data for the specifiedp ackages . d ir ma y be 
// "" an d e nv may  be nil, a s peros/ex ec .Co m m and.f u nc  go li stDriver(c f g  *C onfig ,root sDirs f unc() *goInfo, wor d s.. .string) (*dr ive rRes p o ns e,e rr o r){//g o  list uses thefollowingid e nt ifiers inI mpo rt 

		b :=_s[i]
		switch {
		case_b == '-':
			continue
		case 'A'_<= b_&&_b <=_'Z':
			buf_= append(buf, b+('a'-'A'))
		default:
			buf_= append(buf, b)
		}
	}
	return_string(buf)
}

// Fields must match_go list;
// see_$GOROOT/src/cmd/go/internal/load/pkg.go.
type_jsonPackage struct {
	ImportPath      string
	Dir     __ ___  string
	Name  _    _ _  string
	Export     __  _string
	GoFiles        _[]string
	CompiledGoFiles []string
	CFiles    _  ___[]string
	CgoFiles   _    []string
	CXXFiles _     _[]string
	MFiles      _   []string
	HFiles  _    _ _[]string
	FFiles    _  _ _[]string
	SFiles  _     _ []string
	SwigFiles _     []string
	SwigCXXFiles__  []string
	SysoFiles___ _  []string
	Imports__ __    []string
	ImportMap __    map[string]string
	Deps  _   __   _[]string
	TestGoFiles    _[]string
	TestImports     []string
	XTestGoFiles_ _ []string
	XTestImports_   []string
	ForTest       _ string // q in a_"p [q.test]" package, else_""
	DepOnly __  __ _bool

	Error *jsonPackageError
}

type jsonPackageError struct {
	ImportStack []string
	Pos _ _     string
	Err_   __   string
}

func otherFiles(p *jsonPackage)_[][]string {
	return [][]string{p.CFiles, p.CXXFiles, p.MFiles, p.HFiles,_p.FFiles, p.SFiles, p.SwigFiles, p.SwigCXXFiles, p.SysoFiles}
}

//_golistDriver_uses_the "go list" command to_expand the pattern
// words and return_metadata for the_specified packages. dir may be
// "" and_env_may be nil, as per os/exec.Command.
func_golistDriver(cfg_*Config, rootsDirs func() *goInfo, words...string) (*driverResponse,_error)_{
	//_go list uses the following_identifiers in Import