- // MIR for `get_query` before Inline
+ // MIR for `get_query` after Inline
  
  fn get_query(_1: &T) -> () {
      debug t => _1;
      let mut _0: ();
      let _2: &<Q as Query>::C;
      let mut _3: &T;
      let mut _4: &<Q as Query>::C;
      scope 1 {
          debug c => _2;
+         scope 2 (inlined try_execute_query::<<Q as Query>::C>) {
+             debug c => _4;
+             let mut _5: &dyn Cache<V = <Q as Query>::V>;
+             scope 3 (inlined mk_cycle::<<Q as Query>::V>) {
+                 debug c => _5;
+             }
+         }
      }
  
      bb0: {
          StorageLive(_2);
          StorageLive(_3);
          _3 = copy _1;
          _2 = <Q as Query>::cache::<T>(move _3) -> [return: bb1, unwind continue];
      }
  
      bb1: {
          StorageDead(_3);
          StorageLive(_4);
          _4 = copy _2;
-         _0 = try_execute_query::<<Q as Query>::C>(move _4) -> [return: bb2, unwind continue];
+         StorageLive(_5);
+         _5 = copy _4 as &dyn Cache<V = <Q as Query>::V> (PointerCoercion(Unsize, Implicit));
+         _0 = <dyn Cache<V = <Q as Query>::V> as Cache>::store_nocache(move _5) -> [return: bb2, unwind continue];
      }
  
      bb2: {
+         StorageDead(_5);
          StorageDead(_4);
          StorageDead(_2);
          return;
      }
  }
  
