private TrackInfo CalcNextTrack (Direction direction, bool restart) { if (direction == Direction.Previous) { if (previous_stack.Count > 0) { return previous_stack.Pop (); } } else if (direction == Direction.Next) { if (next_stack.Count > 0) { return next_stack.Pop (); } } return QueryTrack (direction, restart); }