Trouble setting an optional @Observable object

i'm having trouble modifying an optional environment object. i'm using the .environment modifier to pass along an optional object to other views. to access it in other views, i have to get it through an @Environment property wrapper. but i can't modify it even if i redeclare it in the body as @Bindable. here's an example code:

@main
struct MyApp: App {
    @State private var mySession: MySession?

    var body: some Scene {
        HomeScreen()
            .environment(mySession)
    }
}

now for the HomeScreen:

struct HomeScreen: View {
    @Environment(MySession.self) private var mySession: MySession?

    var body: some View {
        @Bindable var mySession = mySession
        
        Button {
            mySession = MySession()
        } label: {
            Text("Create Session")
        }
    }
}

an error shows up in the @Bindable declaration saying init(wrappedValue:)' is unavailable: The wrapped value must be an object that conforms to Observable. but MySession is declared as @Observable. in fact it works just fine if i don't make the environment optional, but i have to setup MySession in the root of the app, which goes against the app flow.

Trouble setting an optional @Observable object
 
 
Q