// ///|
// struct TestStruct {
//   value : String
//   internal_func : () -> String
// }

// ///|
// pub fn TestStruct::fff(self : Self) -> String {
//   self.value
// }

// ///|
// struct TestStructWrapper(TestStruct)

// ///|
// fn TestStruct::outer(self : Self) -> TestStructWrapper {
//   TestStructWrapper(self)
// }

// externa

// pub fn[X] inspect_x(s : X) ->  {
//   inspect((s.0).fff())
// }

// ///|
// test {
//   let inner = TestStruct::{
//     value: "Hello".to_string(),
//     internal_func: fn() { "Internal".to_string() },
//   }
//   let outer = TestStructWrapper(inner)
//   // outer.value
//   (outer.internal_func)() |> inspect

//   // inspect(outer.0.fff())
//   // inspect(outer.0.fff())

//   // let wrapped = s.outer()
//   // let unwrapped = wrapped.0
//   // assert(unwrapped.fff() == "Hello")
// }