__AGENCY_ANNOTATION reverse_iterator(const reverse_iterator<U>& other) : current_(other.base()) {}
TokenStack::reverse_iterator TokenStack::SeekTerminal(reverse_iterator p) { for ( ; p->IsType(TOKEN_Expr); p++) ; return p; }
typename super_t::difference_type distance_to(reverse_iterator<OtherIterator> const& y) const { return this->base_reference() - y.base(); }
__AGENCY_ANNOTATION bool operator>=(const reverse_iterator<Iterator1>& lhs, const reverse_iterator<Iterator2>& rhs) { return lhs.base() >= rhs.base(); }
typename boost::intrusive::detail::enable_if_convertible<OtherIt, It, reverse_iterator &>::type operator=( const reverse_iterator<OtherIt>& r) { m_current = r.base(); return *this; }
reverse_iterator( reverse_iterator<OtherIterator> const& r , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0 ) : super_t(r.base()) {}
reverse_iterator(const reverse_iterator& r) : m_current(r.base()) {}
reverse_iterator( const reverse_iterator<OtherIt>& r , typename boost::intrusive::detail::enable_if_convertible<OtherIt, It>::type* =0 ) : m_current(r.base()) {}
template<class U> reverse_iterator(const reverse_iterator<U>& x) : current(x.base()) { }
difference_type operator-(reverse_iterator& x) const { return x.base() - base(); };
reverse_iterator(const reverse_iterator<OtherIt>& r) : m_current(r.base()) {}
bool operator<(reverse_iterator<Iterator> const&l,reverse_iterator<Iterator> const&r){ return (r.base() < l.base()); }
bool operator!=(reverse_iterator<Iterator> const&l,reverse_iterator<Iterator> const&r){ return (l.base() != r.base()); }
reverse_iterator(const reverse_iterator<_Iter>& __x) : current(__x.base()) { }
Iterator operator() (const reverse_iterator& i) const { return boost::prior(i.base()); }