func assertPileSanity(t *interval.IntTree, im *Feature, pi *Pile) { if im.Start() < pi.Start() || im.End() > pi.End() { panic(fmt.Sprintf("image extends beyond pile: %#v", im)) } if foundPiles := t.Get(&pileInterval{start: im.Start(), end: im.End()}); len(foundPiles) > 1 { var containing int for _, pile := range foundPiles { r := pile.Range() if (r.Start <= im.Start() && r.End > im.End()) || (r.Start < im.Start() && r.End >= im.End()) { containing++ } } if containing > 1 { panic(fmt.Sprintf("found too many piles for %#v", im)) } } }