docs: def _J(self, theta):
          """
          Implements the order dependent family of functions defined in equations
          4 to 7 in the reference paper.
          """
          if self.order == 0:
              return np.pi - theta
          elif self.order == 1:
              return tf.sin(theta) + (np.pi - theta) * tf.cos(theta)
          elif self.order == 2:
              return 3. * tf.sin(theta) * tf.cos(theta) + \
                     (np.pi - theta) * (1. + 2. * tf.cos(theta) ** 2)