def __init__(
        self,
        sim_states: dict[cirq.Qid | None, TSimulationState],
        qubits: Sequence[cirq.Qid],
        split_untangled_states: bool,
        classical_data: cirq.ClassicalDataStore | None = None,
    ):
        """Initializes the class.

        Args:
            sim_states: The `SimulationState` dictionary. This will not be
                copied; the original reference will be kept here.
            qubits: The canonical ordering of qubits.
            split_untangled_states: If True, optimizes operations by running
                unentangled qubit sets independently and merging those states
                at the end.
            classical_data: The shared classical data container for this
                simulation.
        """
        classical_data = classical_data or value.ClassicalDataDictionaryStore()
        super().__init__(qubits=qubits, classical_data=classical_data)
        self._sim_states = sim_states
        self._split_untangled_states = split_untangled_states
Initializes the class.

        Args:
            sim_states: The `SimulationState` dictionary. This will not be
                copied; the original reference will be kept here.
            qubits: The canonical ordering of qubits.
            split_untangled_states: If True, optimizes operations by running
                unentangled qubit sets independently and merging those states
                at the end.
            classical_data: The shared classical data container for this
                simulation.
        
cirq-core/cirq/sim/simulation_product_state.py