package debugio

import (
	"fmt"
	"reflect"

	"github.com/sagernet/sing/common"
)

func PrintUpstream(obj any) {
	for obj != nil {
		fmt.Println(reflect.TypeOf(obj))
		if u, ok := obj.(common.WithUpstream); !ok {
			break
		} else {
			obj = u.Upstream()
		}
	}
}