public function withColumnsPrefixedBy(string $prefix) : Table
    {
        $columns = [];
        foreach ($this->columns as $column) {
            $columns[] = $column->withPrefix($prefix);
        }

        $indexes = [];
        foreach ($this->indexes as $index) {
            $indexes[] = $index->withColumnsPrefixedBy($prefix);
        }

        $foreignKeys = [];
        foreach ($this->foreignKeys as $foreignKey) {
            $foreignKeys[] = $foreignKey->withLocalColumnsPrefixedBy($prefix);
        }


        return new self(
            $this->name,
            $columns,
            $indexes,
            $foreignKeys
        );
    }