neighbor_view_iterator& operator--()
 {
   --view_.partner_index();
   // Because view_.partner_first_index() have to access neighbor_list, one has to check its validity
   while (view_.source() > 0 and view_.partner_index() < view_.partner_first_index())
     --view_.source();
   return *this;
 }
 neighbor_view_iterator& operator++()
 {
   ++view_.partner_index();
   // Because view_.partner_last_index() have to access neighbor_list, one has to check its validity
   while (view_.source()+1 < view_.partner_first_indices_size() and view_.partner_index() >= view_.partner_last_index())
     ++view_.source();
   return *this;
 }