def _reindex_multi(self, axes, copy, fill_value):
new_index, row_indexer = self.index.reindex(axes['<STR_LIT:index>'])<EOL>new_columns, col_indexer = self.columns.reindex(axes['<STR_LIT>'])<EOL>if row_indexer is not None and col_indexer is not None:<EOL><INDENT>indexer = row_indexer, col_indexer<EOL>new_values = algorithms.take_2d_multi(self.values, indexer,<EOL>fill_value=fill_value)<EOL>return self._constructor(new_values, index=new_index,<EOL>columns=new_columns)<EOL><DEDENT>else:<EOL><INDENT>return self._reindex_with_indexers({<NUM_LIT:0>: [new_index, row_indexer],<EOL><NUM_LIT:1>: [new_columns, col_indexer]},<EOL>copy=copy,<EOL>fill_value=fill_value)<EOL><DEDENT>
We are guaranteed non-Nones in the axes.