protected function gatherChanges(array $changes): bool
    {
        if (!isset($changes[$this->_currentTable])) {
            return true;
        }

        $data = array_reverse($changes[$this->_currentTable]);

        /* @var $tableChange TableChange */
        foreach ($data as $tableChange) {
            if ($tableChange->method === 'dropTable') {
                return false;
            }

            if ($tableChange->method === 'renameTable') {
                $this->_currentTable = $tableChange->value;
                return $this->gatherChanges($changes);
            }

            $this->_appliedChanges[] = $tableChange;

            if ($tableChange->method === 'createTable') {
                return false;
            }
        }

        return true;
    }