original_string: public function track($col, $msg, $level = 'normal', $merge = true) {
          if (empty($this->_row)) {
              $this->flush(); //init arrays
          }
          if (!in_array($col, $this->columns)) {
              debugging('Incorrect column:'.$col);
              return;
          }
          if ($merge) {
              if ($this->_row[$col][$level] != '') {
                  $this->_row[$col][$level] .='<br />';
              }
              $this->_row[$col][$level] .= $msg;
          } else {
              $this->_row[$col][$level] = $msg;
          }
      }
code: public function track($col, $msg, $level = 'normal', $merge = true) {
          if (empty($this->_row)) {
              $this->flush(); //init arrays
          }
          if (!in_array($col, $this->columns)) {
              debugging('Incorrect column:'.$col);
              return;
          }
          if ($merge) {
              if ($this->_row[$col][$level] != '') {
                  $this->_row[$col][$level] .='<br />';
              }
              $this->_row[$col][$level] .= $msg;
          } else {
              $this->_row[$col][$level] = $msg;
          }
      }
code_tokens: public function track ( $ col , $ msg , $ level = 'normal' , $ merge = true ) { if ( empty ( $ this -> _row ) ) { $ this -> flush ( ) ; //init arrays } if ( ! in_array ( $ col , $ this -> columns ) ) { debugging ( 'Incorrect column:' . $ col ) ; return ; } if ( $ merge ) { if ( $ this -> _row [ $ col ] [ $ level ] != '' ) { $ this -> _row [ $ col ] [ $ level ] .= '<br />' ; } $ this -> _row [ $ col ] [ $ level ] .= $ msg ; } else { $ this -> _row [ $ col ] [ $ level ] = $ msg ; } }
docstring: Add tracking info
  @param string $col name of column
  @param string $msg message
  @param string $level 'normal', 'warning' or 'error'
  @param bool $merge true means add as new line, false means override all previous text of the same type
  @return void
docstring_tokens: Add tracking info