code: func (s *Stack) less(r *Stack) bool {
  	lStdlib := 0
  	lPrivate := 0
  	for _, c := range s.Calls {
  		if c.IsStdlib {
  			lStdlib++
  		} else {
  			lPrivate++
  		}
  	}
  	rStdlib := 0
  	rPrivate := 0
  	for _, s := range r.Calls {
  		if s.IsStdlib {
  			rStdlib++
  		} else {
  			rPrivate++
  		}
  	}
  	if lPrivate > rPrivate {
  		return true
  	}
  	if lPrivate < rPrivate {
  		return false
  	}
  	if lStdlib > rStdlib {
  		return false
  	}
  	if lStdlib < rStdlib {
  		return true
  	}
  
  	// Stack lengths are the same.
  	for x := range s.Calls {
  		if s.Calls[x].Func.Raw < r.Calls[x].Func.Raw {
  			return true
  		}
  		if s.Calls[x].Func.Raw > r.Calls[x].Func.Raw {
  			return true
  		}
  		if s.Calls[x].PkgSrc() < r.Calls[x].PkgSrc() {
  			return true
  		}
  		if s.Calls[x].PkgSrc() > r.Calls[x].PkgSrc() {
  			return true
  		}
  		if s.Calls[x].Line < r.Calls[x].Line {
  			return true
  		}
  		if s.Calls[x].Line > r.Calls[x].Line {
  			return true
  		}
  	}
  	return false
  }
docs: // less compares two Stack, where the ones that are less are more
  // important, so they come up front.
  //
  // A Stack with more private functions is 'less' so it is at the top.
  // Inversely, a Stack with only public functions is 'more' so it is at the
  // bottom.