fix(lib): rename `fail!` to `panic!`
fix(analysis): avoid using "unsafe" trait object