def METHOD_NAME(self) -> Union[np.ndarray, NotImplementedType]:
    # Obtain the unitary for the single qubit gate
    single_unitary = protocols.unitary(self.sub_gate, NotImplemented)
    # Make sure we actually have a matrix
    if single_unitary is NotImplemented:
        return single_unitary
    # Create a unitary which corresponds to applying the gate
    # unitary _num_copies times. This will blow up memory fast.
    unitary = single_unitary
    for _ in range(self._num_copies - 1):
        unitary = np.kron(unitary, single_unitary)
    return unitary