- // MIR for `main` before Derefer
+ // MIR for `main` after Derefer
  
  fn main() -> () {
      let mut _0: ();
      let _1: std::boxed::Box<std::boxed::Box<u32>>;
      let mut _2: std::boxed::Box<u32>;
  
      bb0: {
          StorageLive(_1);
          StorageLive(_2);
          _2 = f() -> [return: bb1, unwind continue];
      }
  
      bb1: {
          _1 = Box::<Box<u32>>::new(move _2) -> [return: bb2, unwind: bb4];
      }
  
      bb2: {
          StorageDead(_2);
          drop(_1) -> [return: bb3, unwind continue];
      }
  
      bb3: {
          StorageDead(_1);
          _0 = const ();
          return;
      }
  
      bb4 (cleanup): {
          drop(_2) -> [return: bb5, unwind terminate(cleanup)];
      }
  
      bb5 (cleanup): {
          resume;
      }
  }
  
