stack.go
func (s *SegmentStack) Pop() (int64, bool) {
	s.Lock()
	defer s.Unlock()
	if s.Len() == 0 {
		return rootSegment, false
	}
	id := s.s[s.Len()-1]
	s.s = s.s[:s.Len()-1]
	return id, true
}
func (s *SegmentStack) Pop() (int64, bool) {
	s.Lock()
	defer s.Unlock()
	if s.Len() == 0 {
		return rootSegment, false
	}
	id := s.s[s.Len()-1]
	s.s = s.s[:s.Len()-1]
	return id, true
}
// Pop pops a segment id off of the segment stack. It returns false if the stack is empty.