public function getTableIterator($part = 'body', $iterator_flag = self::ITERATE_ON_LINES)
    {
        $this->_repadAllLines();
        $table = $this->getTable();
        unset($table['title']);
        if (!empty($part)) {
            if (isset($table[$part])) {
                if ($iterator_flag & self::ITERATE_ON_COLUMNS) {
                    $columns = array();
                    foreach ($table[$part] as $i=>$line) {
                        foreach ($line as $j=>$cell) {
                            if (!isset($columns[$j])) {
                                $columns[$j] = array();
                            }
                            $columns[$j][$i] = $cell;
                        }
                    }
                    return new ArrayIterator($columns);
                } else {
                    return new ArrayIterator($table[$part]);
                }
            } else {
                throw new InvalidArgumentException(
                    sprintf('Unknown table part "%s"!', $part)
                );
            }
        } else {
            $lines = array();
            foreach (self::$_table_parts as $_part) {
                if (isset($this->{$_part}) && !empty($this->{$_part})) {
                    foreach ($this->{$_part} as $line) {
                        $lines[] = $line;
                    }
                }
            }
            if ($iterator_flag & self::ITERATE_ON_COLUMNS) {
                $columns = array();
                foreach ($lines as $i=>$line) {
                    foreach ($line as $j=>$cell) {
                        if (!isset($columns[$j])) {
                            $columns[$j] = array();
                        }
                        $columns[$j][$i] = $cell;
                    }
                }
                return new ArrayIterator($columns);
            } else {
                return new ArrayIterator($lines);
            }
        }
    }