original_string: public function unique()
      {
          $exist = $remove = array();
  
          $old = $this->_filter;
          $this->setIteratorFilter(self::HIDE_GROUPS | self::BASE_ELEMENTS);
  
          // For duplicates, we use the first address that contains personal
          // information.
          foreach ($this as $key => $val) {
              $bare = $val->bare_address;
              if (isset($exist[$bare])) {
                  if (($exist[$bare] == -1) || is_null($val->personal)) {
                      $remove[] = $key;
                  } else {
                      $remove[] = $exist[$bare];
                      $exist[$bare] = -1;
                  }
              } else {
                  $exist[$bare] = is_null($val->personal)
                      ? $key
                      : -1;
              }
          }
  
          foreach (array_reverse($remove) as $key) {
              unset($this[$key]);
          }
  
          $this->_filter = $old;
      }
code: public function unique()
      {
          $exist = $remove = array();
  
          $old = $this->_filter;
          $this->setIteratorFilter(self::HIDE_GROUPS | self::BASE_ELEMENTS);
  
          // For duplicates, we use the first address that contains personal
          // information.
          foreach ($this as $key => $val) {
              $bare = $val->bare_address;
              if (isset($exist[$bare])) {
                  if (($exist[$bare] == -1) || is_null($val->personal)) {
                      $remove[] = $key;
                  } else {
                      $remove[] = $exist[$bare];
                      $exist[$bare] = -1;
                  }
              } else {
                  $exist[$bare] = is_null($val->personal)
                      ? $key
                      : -1;
              }
          }
  
          foreach (array_reverse($remove) as $key) {
              unset($this[$key]);
          }
  
          $this->_filter = $old;
      }
code_tokens: public function unique ( ) { $ exist = $ remove = array ( ) ; $ old = $ this -> _filter ; $ this -> setIteratorFilter ( self :: HIDE_GROUPS | self :: BASE_ELEMENTS ) ; // For duplicates, we use the first address that contains personal // information. foreach ( $ this as $ key => $ val ) { $ bare = $ val -> bare_address ; if ( isset ( $ exist [ $ bare ] ) ) { if ( ( $ exist [ $ bare ] == - 1 ) || is_null ( $ val -> personal ) ) { $ remove [ ] = $ key ; } else { $ remove [ ] = $ exist [ $ bare ] ; $ exist [ $ bare ] = - 1 ; } } else { $ exist [ $ bare ] = is_null ( $ val -> personal ) ? $ key : - 1 ; } } foreach ( array_reverse ( $ remove ) as $ key ) { unset ( $ this [ $ key ] ) ; } $ this -> _filter = $ old ; }
docstring: Removes duplicate addresses from list. This method ignores Group
  objects.
docstring_tokens: Removes duplicate addresses from list . This method ignores Group objects .