<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def t0_perpass_supconj(b, orbit, solve_for=None, **kwargs):
 """ 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) """


    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}