def process_call(self, call_primitive: core.Primitive, f: lu.WrappedFun, tracers: Sequence[TensorFlowTracer], params):
    assert call_primitive.multiple_results
    vals: Sequence[TfVal] = [t.val for t in tracers]
    f = _interpret_subtrace(f, self.main, tuple((t.aval for t in tracers)))
    with core.new_sublevel():
        if (call_primitive == core.named_call_p):
            with tf.name_scope(_sanitize_scope_name(params['name'])):
                vals_out: Sequence[Tuple[(TfVal, core.AbstractValue)]] = f.call_wrapped(*vals)
        elif (call_primitive == sharded_jit.sharded_call_p):
            vals_out = _sharded_call(f, vals, **params)
        else:
            vals_out = f.call_wrapped(*vals)
    return [TensorFlowTracer(self, v, a) for (v, a) in vals_out]
def process_call(self, call_primitive: core.Primitive, f: lu.WrappedFun, tracers: Sequence[TensorFlowTracer], params):
    assert call_primitive.multiple_results
    vals: Sequence[TfVal] = [t.val for t in tracers]
    f = _interpret_subtrace(f, self.main, tuple((t.aval for t in tracers)))
    with core.new_sublevel():
        if (call_primitive == core.named_call_p):
            with tf.name_scope(_sanitize_scope_name(params['name'])):
                vals_out: Sequence[Tuple[(TfVal, core.AbstractValue)]] = f.call_wrapped(*vals)
        elif (call_primitive == sharded_jit.sharded_call_p):
            vals_out = _sharded_call(f, vals, **params)
        else:
            vals_out = f.call_wrapped(*vals)
    return [TensorFlowTracer(self, v, a) for (v, a) in vals_out]