original_string: public function add($data, $merge = false)
      {
          if (is_array($data) || ($merge && ($data instanceof Traversable))) {
              foreach ($data as $val) {
                  $this->add($val);
              }
          } elseif (is_object($data)) {
              $this->_data[] = $data;
          } elseif (!is_null($data)) {
              $this->_data[] = new Horde_Imap_Client_Data_Format_Atom($data);
          }
  
          return $this;
      }
code: public function add($data, $merge = false)
      {
          if (is_array($data) || ($merge && ($data instanceof Traversable))) {
              foreach ($data as $val) {
                  $this->add($val);
              }
          } elseif (is_object($data)) {
              $this->_data[] = $data;
          } elseif (!is_null($data)) {
              $this->_data[] = new Horde_Imap_Client_Data_Format_Atom($data);
          }
  
          return $this;
      }
code_tokens: public function add ( $ data , $ merge = false ) { if ( is_array ( $ data ) || ( $ merge && ( $ data instanceof Traversable ) ) ) { foreach ( $ data as $ val ) { $ this -> add ( $ val ) ; } } elseif ( is_object ( $ data ) ) { $ this -> _data [ ] = $ data ; } elseif ( ! is_null ( $ data ) ) { $ this -> _data [ ] = new Horde_Imap_Client_Data_Format_Atom ( $ data ) ; } return $ this ; }
docstring: Add an element to the list.
  
  @param mixed $data     The data element(s) to add. Either a
  Horde_Imap_Client_Data_Format object, a string
  value that will be treated as an IMAP atom, or
  an array (or iterable object) of objects to add.
  @param boolean $merge  Merge the contents of any container objects,
  instead of adding the objects themselves?
  
  @return Horde_Imap_Client_Data_Format_List  This object to allow for
  chainable calls (since
  2.10.0).
docstring_tokens: Add an element to the list .