package goldsmith type ( filterEntry struct { filter Filter index int } filterStack []filterEntry ) func (self *filterStack) accept(file *File) bool { for _, entry := range *self { if entry.index >= file.index && !entry.filter.Accept(file) { return false } } return true } func (self *filterStack) push(filter Filter, index int) { *self = append(*self, filterEntry{filter, index}) } func (self *filterStack) pop() { count := len(*self) if count == 0 { panic("attempted to pop empty filter stack") } *self = (*self)[:count-1] }