var root … var verbose … var wg … var urlq … type urlFrag … var mu … var crawled … var neededFrags … var aRx … var linkSources … var fragExists … var problems … func localLinks(body string) (links []string) { … } var idRx … func pageIDs(body string) (ids []string) { … } // url may contain a #fragment, and the fragment is then noted as needing to exist. func crawl(url string, sourceURL string) { … } func addProblem(url, errmsg string) { … } func crawlLoop() { … } func doCrawl(url string) error { … } func main() { … }