code: def t0_perpass_supconj(b, orbit, solve_for=None, **kwargs):
      
  
      orbit_ps = _get_system_ps(b, orbit)
  
      metawargs = orbit_ps.meta
      metawargs.pop('qualifier')
  
      # by default both t0s exist in an orbit, so we don't have to worry about creating either
      t0_perpass = b.get_parameter(qualifier='t0_perpass', **metawargs)
      t0_supconj = b.get_parameter(qualifier='t0_supconj', **metawargs)
      period = b.get_parameter(qualifier='period', **metawargs)
      ecc = b.get_parameter(qualifier='ecc', **metawargs)
      per0 = b.get_parameter(qualifier='per0', **metawargs)
  
      if solve_for in [None, t0_perpass]:
          lhs = t0_perpass
          rhs = t0_supconj_to_perpass(t0_supconj, period, ecc, per0)
  
      elif solve_for == t0_supconj:
          lhs = t0_supconj
          rhs = t0_perpass_to_supconj(t0_perpass, period, ecc, per0)
  
  
  
      else:
          raise NotImplementedError
  
      return lhs, rhs, {'orbit': orbit}
docs: Create a constraint for t0_perpass in an orbit - allowing translating between
      t0_perpass and t0_supconj.
  
      :parameter b: the :class:`phoebe.frontend.bundle.Bundle`
      :parameter str orbit: the label of the orbit in which this
          constraint should be built
      :parameter str solve_for:  if 't0_perpass' should not be the derived/constrained
          parameter, provide which other parameter should be derived
          (ie 't0_supconj', 'per0', 'period')
      :returns: lhs (Parameter), rhs (ConstraintParameter), args (list of arguments
          that were passed to this function)