code: def rotated_twopoints(
      self, donor: np.ndarray, individual: np.ndarray
  ) -> None:
      bounds = sorted(
          self.random_state.choice(
              donor.size + 1, size=2, replace=False
          ).tolist()
      )
      if (
          bounds[1] == donor.size and not bounds[0]
      ):  # make sure there is at least one point crossover
          bounds[
              self.random_state.randint(2)
          ] = self.random_state.randint(1, donor.size)
      bounds2 = [
          self.random_state.choice(
              donor.size + 1 - bounds[1] + bounds[0]
          )
      ]
      bounds2.append(bounds2[0] + bounds[1] - bounds[0])
      assert bounds[1] < donor.size + 1
      donor[bounds[0] : bounds[1]] = individual[bounds2[0] : bounds2[1]]
  
imports: import warnings
  import numpy
  import nevergrad.common.typing
  from nevergrad.parametrization import parameter
  from .None import metamodel
  from .None import base
  from .None import oneshot
label_desc: Use image node_id 6 for calling the Crossover obj's underlying member method code with example usage: obj.rotated_twopoints(donor, individual) without return types