CodeInfo( 1 ─ (getfield)(args, 1) │ %2 = (getfield)(args, 2) │ %3 = (tuple)(nothing) │ %4 = (tuple)(1, %3) └── goto #2 @ /home/topolarity/repos/Diffractor.jl/mwe.jl:6 within `times_three_while` 2 ┄ %6 = φ (#1 => %4, #3 => %21) │ %7 = φ (#1 => 3, #3 => %18) │ %8 = φ (#1 => %2, #3 => %15) │ %9 = (∂⃖{1}())(Main.:>, %7, 1) │ %10 = (getfield)(%9, 1) │ %11 = (getfield)(%9, 2) │ %12 = (tuple)(%6, nothing, nothing, %11, nothing) └── goto #4 if not %10 @ /home/topolarity/repos/Diffractor.jl/mwe.jl:7 within `times_three_while` 3 ─ %14 = (∂⃖{1}())(Main.:+, %8, %2) │ %15 = (getfield)(%14, 1) │ %16 = (getfield)(%14, 2) │ @ /home/topolarity/repos/Diffractor.jl/mwe.jl:8 within `times_three_while` │ %17 = (∂⃖{1}())(Main.:-, %7, 1) │ %18 = (getfield)(%17, 1) │ %19 = (getfield)(%17, 2) │ @ /home/topolarity/repos/Diffractor.jl/mwe.jl:9 within `times_three_while` │ %20 = (tuple)(%12, %16, %19, nothing) │ %21 = (tuple)(2, %20) └── goto #2 4 ─ %23 = (tuple)(%12, nothing) └── goto #5 5 ─ %25 = $(Expr(:new_opaque_closure, Tuple{Any}, Union{}, Any, :($(Expr(:opaque_closure_method, :∂⃖¹₁times_three_while, 1, false, :(#= none:1 =#), CodeInfo( 1 ─ for_%9 = ChainRulesCore.ZeroTangent() │ for_%5 = ChainRulesCore.ZeroTangent() │ for_%3 = ChainRulesCore.ZeroTangent() │ for_Core.Argument(2) = ChainRulesCore.ZeroTangent() │ for_%8 = ChainRulesCore.ZeroTangent() │ for_%4 = ChainRulesCore.ZeroTangent() │ %7 = (Diffractor.accum)(for_%4, Δ) │ for_%4 = %7 │ %9 = (getfield)(#self#, 1) └── goto #2 2 ─ %11 = (getfield)(%9, 1) └── goto #4 3 ─ %13 = (Diffractor.accum)(for_%8, phi_temp_4) │ for_%8 = %13 │ %15 = (Diffractor.accum)(for_%9, phi_temp_3) │ for_%9 = %15 │ %17 = %48 │ %18 = (getfield)(%17, 3) │ %19 = (%18)(for_%9) │ %20 = (getfield)(%19, 2) │ %21 = (Diffractor.accum)(for_%3, %20) │ for_%3 = %21 │ for_%9 = ChainRulesCore.ZeroTangent() │ %24 = (getfield)(%17, 2) │ %25 = (%24)(for_%8) │ %26 = (getfield)(%25, 2) │ %27 = (Diffractor.accum)(for_%4, %26) │ for_%4 = %27 │ %29 = (getfield)(%25, 3) │ %30 = (Diffractor.accum)(for_Core.Argument(2), %29) │ for_Core.Argument(2) = %30 │ for_%8 = ChainRulesCore.ZeroTangent() │ %33 = (getfield)(%17, 1) └── goto #4 4 ┄ %35 = φ (#3 => %33, #2 => %11) │ %36 = (getfield)(%35, 4) │ %37 = (%36)(for_%5) │ %38 = (getfield)(%37, 2) │ %39 = (Diffractor.accum)(for_%3, %38) │ for_%3 = %39 │ for_%5 = ChainRulesCore.ZeroTangent() │ phi_temp_4 = for_%4 │ for_%4 = ChainRulesCore.ZeroTangent() │ phi_temp_3 = for_%3 │ for_%3 = ChainRulesCore.ZeroTangent() │ %46 = (getfield)(%35, 1) │ %47 = (getfield)(%46, 1) │ %48 = (getfield)(%46, 2) │ %49 = (!=)(%47, 1) └── goto #6 if not %49 5 ─ goto #3 6 ─ %52 = (Diffractor.accum)(for_Core.Argument(2), phi_temp_4) │ for_Core.Argument(2) = %52 │ %54 = (tuple)(ChainRulesCore.ZeroTangent(), for_Core.Argument(2)) └── return %54 )))), :(%23), nothing)) │ %26 = (typeof)(%8) │ %27 = (Core.apply_type)(Diffractor.OpticBundle, %26) │ %28 = %new(%27, %8, %25) └── return %28 )