code: def inducingpoint_wrapper(feat, Z):
      
      if feat is not None and Z is not None:
          raise ValueError("Cannot pass both an InducingFeature instance and Z values")  # pragma: no cover
      elif feat is None and Z is None:
          raise ValueError("You must pass either an InducingFeature instance or Z values")  # pragma: no cover
      elif Z is not None:
          feat = InducingPoints(Z)
      elif isinstance(feat, np.ndarray):
          feat = InducingPoints(feat)
      else:
          assert isinstance(feat, InducingFeature)  # pragma: no cover
      return feat
docs: Models which used to take only Z can now pass `feat` and `Z` to this method. This method will
      check for consistency and return the correct feature. This allows backwards compatibility in
      for the methods.