diff --git a/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound.stderr b/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound.stderr
index ead05261b1938bc55f0c9765e02f855a0c90f57a..d32d8ada7a11a463bb24abcc8170f6cc5be1bbe0 100644
--- a/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound.stderr
+++ b/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound.stderr
@@ -1,13 +1,12 @@
-error[E0369]: binary operation `==` cannot be applied to type `&<T as pallet::Config>::Bar`
+error[E0277]: `<T as pallet::Config>::Bar` doesn't implement `std::fmt::Debug`
   --> $DIR/call_argument_invalid_bound.rs:20:41
    |
 20 |         pub fn foo(origin: OriginFor<T>, bar: T::Bar) -> DispatchResultWithPostInfo {
-   |                                               ^
-   |
-help: consider further restricting this bound
+   |                                               ^ `<T as pallet::Config>::Bar` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug`
    |
-17 |     #[pallet::call + std::cmp::PartialEq]
-   |                    ^^^^^^^^^^^^^^^^^^^^^
+   = help: the trait `std::fmt::Debug` is not implemented for `<T as pallet::Config>::Bar`
+   = note: required because of the requirements on the impl of `std::fmt::Debug` for `&<T as pallet::Config>::Bar`
+   = note: required for the cast to the object type `dyn std::fmt::Debug`
 
 error[E0277]: the trait bound `<T as pallet::Config>::Bar: Clone` is not satisfied
   --> $DIR/call_argument_invalid_bound.rs:20:41
@@ -17,12 +16,13 @@ error[E0277]: the trait bound `<T as pallet::Config>::Bar: Clone` is not satisfi
    |
    = note: required by `clone`
 
-error[E0277]: `<T as pallet::Config>::Bar` doesn't implement `std::fmt::Debug`
+error[E0369]: binary operation `==` cannot be applied to type `&<T as pallet::Config>::Bar`
   --> $DIR/call_argument_invalid_bound.rs:20:41
    |
 20 |         pub fn foo(origin: OriginFor<T>, bar: T::Bar) -> DispatchResultWithPostInfo {
-   |                                               ^ `<T as pallet::Config>::Bar` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug`
+   |                                               ^
    |
-   = help: the trait `std::fmt::Debug` is not implemented for `<T as pallet::Config>::Bar`
-   = note: required because of the requirements on the impl of `std::fmt::Debug` for `&<T as pallet::Config>::Bar`
-   = note: required for the cast to the object type `dyn std::fmt::Debug`
+help: consider further restricting this bound
+   |
+17 |     #[pallet::call + std::cmp::PartialEq]
+   |                    ^^^^^^^^^^^^^^^^^^^^^
diff --git a/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound_2.stderr b/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound_2.stderr
index 2a3bbe1abf4cd35c35fd7d1fba549e7f5bc097e1..bad37153de7c438f915feee24a5eed1623752df3 100644
--- a/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound_2.stderr
+++ b/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound_2.stderr
@@ -1,39 +1,12 @@
-error[E0277]: the trait bound `<T as pallet::Config>::Bar: WrapperTypeDecode` is not satisfied
-   --> $DIR/call_argument_invalid_bound_2.rs:20:41
-    |
-20  |         pub fn foo(origin: OriginFor<T>, bar: T::Bar) -> DispatchResultWithPostInfo {
-    |                                               ^ the trait `WrapperTypeDecode` is not implemented for `<T as pallet::Config>::Bar`
-    |
-   ::: /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/parity-scale-codec-2.1.1/src/codec.rs:277:18
-    |
-277 |     fn decode<I: Input>(input: &mut I) -> Result<Self, Error>;
-    |                  ----- required by this bound in `pallet::_::_parity_scale_codec::Decode::decode`
-    |
-    = note: required because of the requirements on the impl of `Decode` for `<T as pallet::Config>::Bar`
-
-error[E0277]: the trait bound `<T as pallet::Config>::Bar: WrapperTypeEncode` is not satisfied
-   --> $DIR/call_argument_invalid_bound_2.rs:20:41
-    |
-20  |         pub fn foo(origin: OriginFor<T>, bar: T::Bar) -> DispatchResultWithPostInfo {
-    |                                               ^ the trait `WrapperTypeEncode` is not implemented for `<T as pallet::Config>::Bar`
-    |
-   ::: /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/parity-scale-codec-2.1.1/src/codec.rs:216:21
-    |
-216 |     fn encode_to<T: Output + ?Sized>(&self, dest: &mut T) {
-    |                     ------ required by this bound in `encode_to`
-    |
-    = note: required because of the requirements on the impl of `pallet::_::_parity_scale_codec::Encode` for `<T as pallet::Config>::Bar`
-
-error[E0369]: binary operation `==` cannot be applied to type `&<T as pallet::Config>::Bar`
+error[E0277]: `<T as pallet::Config>::Bar` doesn't implement `std::fmt::Debug`
   --> $DIR/call_argument_invalid_bound_2.rs:20:41
    |
 20 |         pub fn foo(origin: OriginFor<T>, bar: T::Bar) -> DispatchResultWithPostInfo {
-   |                                               ^
-   |
-help: consider further restricting this bound
+   |                                               ^ `<T as pallet::Config>::Bar` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug`
    |
-17 |     #[pallet::call + std::cmp::PartialEq]
-   |                    ^^^^^^^^^^^^^^^^^^^^^
+   = help: the trait `std::fmt::Debug` is not implemented for `<T as pallet::Config>::Bar`
+   = note: required because of the requirements on the impl of `std::fmt::Debug` for `&<T as pallet::Config>::Bar`
+   = note: required for the cast to the object type `dyn std::fmt::Debug`
 
 error[E0277]: the trait bound `<T as pallet::Config>::Bar: Clone` is not satisfied
   --> $DIR/call_argument_invalid_bound_2.rs:20:41
@@ -43,12 +16,39 @@ error[E0277]: the trait bound `<T as pallet::Config>::Bar: Clone` is not satisfi
    |
    = note: required by `clone`
 
-error[E0277]: `<T as pallet::Config>::Bar` doesn't implement `std::fmt::Debug`
+error[E0369]: binary operation `==` cannot be applied to type `&<T as pallet::Config>::Bar`
   --> $DIR/call_argument_invalid_bound_2.rs:20:41
    |
 20 |         pub fn foo(origin: OriginFor<T>, bar: T::Bar) -> DispatchResultWithPostInfo {
-   |                                               ^ `<T as pallet::Config>::Bar` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug`
+   |                                               ^
    |
-   = help: the trait `std::fmt::Debug` is not implemented for `<T as pallet::Config>::Bar`
-   = note: required because of the requirements on the impl of `std::fmt::Debug` for `&<T as pallet::Config>::Bar`
-   = note: required for the cast to the object type `dyn std::fmt::Debug`
+help: consider further restricting this bound
+   |
+17 |     #[pallet::call + std::cmp::PartialEq]
+   |                    ^^^^^^^^^^^^^^^^^^^^^
+
+error[E0277]: the trait bound `<T as pallet::Config>::Bar: WrapperTypeEncode` is not satisfied
+   --> $DIR/call_argument_invalid_bound_2.rs:20:41
+    |
+20  |         pub fn foo(origin: OriginFor<T>, bar: T::Bar) -> DispatchResultWithPostInfo {
+    |                                               ^ the trait `WrapperTypeEncode` is not implemented for `<T as pallet::Config>::Bar`
+    |
+   ::: /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/parity-scale-codec-2.1.1/src/codec.rs:216:21
+    |
+216 |     fn encode_to<T: Output + ?Sized>(&self, dest: &mut T) {
+    |                     ------ required by this bound in `encode_to`
+    |
+    = note: required because of the requirements on the impl of `pallet::_::_parity_scale_codec::Encode` for `<T as pallet::Config>::Bar`
+
+error[E0277]: the trait bound `<T as pallet::Config>::Bar: WrapperTypeDecode` is not satisfied
+   --> $DIR/call_argument_invalid_bound_2.rs:20:41
+    |
+20  |         pub fn foo(origin: OriginFor<T>, bar: T::Bar) -> DispatchResultWithPostInfo {
+    |                                               ^ the trait `WrapperTypeDecode` is not implemented for `<T as pallet::Config>::Bar`
+    |
+   ::: /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/parity-scale-codec-2.1.1/src/codec.rs:277:18
+    |
+277 |     fn decode<I: Input>(input: &mut I) -> Result<Self, Error>;
+    |                  ----- required by this bound in `pallet::_::_parity_scale_codec::Decode::decode`
+    |
+    = note: required because of the requirements on the impl of `Decode` for `<T as pallet::Config>::Bar`
diff --git a/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound_3.stderr b/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound_3.stderr
index 73c3069719ea23fc0c38ac0ed113e86305733dd2..b6f4494033f7b89e19d3d9d605a38582ee71bb54 100644
--- a/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound_3.stderr
+++ b/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound_3.stderr
@@ -1,10 +1,13 @@
-error[E0369]: binary operation `==` cannot be applied to type `&Bar`
+error[E0277]: `Bar` doesn't implement `std::fmt::Debug`
   --> $DIR/call_argument_invalid_bound_3.rs:22:41
    |
 22 |         pub fn foo(origin: OriginFor<T>, bar: Bar) -> DispatchResultWithPostInfo {
-   |                                               ^^^
+   |                                               ^^^ `Bar` cannot be formatted using `{:?}`
    |
-   = note: an implementation of `std::cmp::PartialEq` might be missing for `&Bar`
+   = help: the trait `std::fmt::Debug` is not implemented for `Bar`
+   = note: add `#[derive(Debug)]` or manually implement `std::fmt::Debug`
+   = note: required because of the requirements on the impl of `std::fmt::Debug` for `&Bar`
+   = note: required for the cast to the object type `dyn std::fmt::Debug`
 
 error[E0277]: the trait bound `Bar: Clone` is not satisfied
   --> $DIR/call_argument_invalid_bound_3.rs:22:41
@@ -14,13 +17,10 @@ error[E0277]: the trait bound `Bar: Clone` is not satisfied
    |
    = note: required by `clone`
 
-error[E0277]: `Bar` doesn't implement `std::fmt::Debug`
+error[E0369]: binary operation `==` cannot be applied to type `&Bar`
   --> $DIR/call_argument_invalid_bound_3.rs:22:41
    |
 22 |         pub fn foo(origin: OriginFor<T>, bar: Bar) -> DispatchResultWithPostInfo {
-   |                                               ^^^ `Bar` cannot be formatted using `{:?}`
+   |                                               ^^^
    |
-   = help: the trait `std::fmt::Debug` is not implemented for `Bar`
-   = note: add `#[derive(Debug)]` or manually implement `std::fmt::Debug`
-   = note: required because of the requirements on the impl of `std::fmt::Debug` for `&Bar`
-   = note: required for the cast to the object type `dyn std::fmt::Debug`
+   = note: an implementation of `std::cmp::PartialEq` might be missing for `&Bar`
diff --git a/substrate/frame/support/test/tests/pallet_ui/event_field_not_member.stderr b/substrate/frame/support/test/tests/pallet_ui/event_field_not_member.stderr
index 97d4db798e61191abfccf28d62d112af6b7d1c68..d48012a6c952d1a0be31b4d6ca42b2a62801fa82 100644
--- a/substrate/frame/support/test/tests/pallet_ui/event_field_not_member.stderr
+++ b/substrate/frame/support/test/tests/pallet_ui/event_field_not_member.stderr
@@ -1,12 +1,10 @@
-error[E0277]: `<T as pallet::Config>::Bar` doesn't implement `std::fmt::Debug`
+error[E0277]: the trait bound `<T as pallet::Config>::Bar: Clone` is not satisfied
   --> $DIR/event_field_not_member.rs:23:7
    |
 23 |         B { b: T::Bar },
-   |             ^ `<T as pallet::Config>::Bar` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug`
+   |             ^ the trait `Clone` is not implemented for `<T as pallet::Config>::Bar`
    |
-   = help: the trait `std::fmt::Debug` is not implemented for `<T as pallet::Config>::Bar`
-   = note: required because of the requirements on the impl of `std::fmt::Debug` for `&<T as pallet::Config>::Bar`
-   = note: required for the cast to the object type `dyn std::fmt::Debug`
+   = note: required by `clone`
 
 error[E0369]: binary operation `==` cannot be applied to type `&<T as pallet::Config>::Bar`
   --> $DIR/event_field_not_member.rs:23:7
@@ -19,10 +17,12 @@ help: consider further restricting this bound
 22 |     pub enum Event<T: Config + std::cmp::PartialEq> {
    |                              ^^^^^^^^^^^^^^^^^^^^^
 
-error[E0277]: the trait bound `<T as pallet::Config>::Bar: Clone` is not satisfied
+error[E0277]: `<T as pallet::Config>::Bar` doesn't implement `std::fmt::Debug`
   --> $DIR/event_field_not_member.rs:23:7
    |
 23 |         B { b: T::Bar },
-   |             ^ the trait `Clone` is not implemented for `<T as pallet::Config>::Bar`
+   |             ^ `<T as pallet::Config>::Bar` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug`
    |
-   = note: required by `clone`
+   = help: the trait `std::fmt::Debug` is not implemented for `<T as pallet::Config>::Bar`
+   = note: required because of the requirements on the impl of `std::fmt::Debug` for `&<T as pallet::Config>::Bar`
+   = note: required for the cast to the object type `dyn std::fmt::Debug`
diff --git a/substrate/frame/support/test/tests/pallet_ui/storage_info_unsatisfied_nmap.stderr b/substrate/frame/support/test/tests/pallet_ui/storage_info_unsatisfied_nmap.stderr
index 545520124bfee5a486e8c2e54a361050bfb88858..6c92423c6a7fec9f0296abe7b23c4c8bbfc16712 100644
--- a/substrate/frame/support/test/tests/pallet_ui/storage_info_unsatisfied_nmap.stderr
+++ b/substrate/frame/support/test/tests/pallet_ui/storage_info_unsatisfied_nmap.stderr
@@ -4,6 +4,6 @@ error[E0277]: the trait bound `Bar: MaxEncodedLen` is not satisfied
 10 |     #[pallet::generate_storage_info]
    |               ^^^^^^^^^^^^^^^^^^^^^ the trait `MaxEncodedLen` is not implemented for `Bar`
    |
-   = note: required because of the requirements on the impl of `KeyGeneratorMaxEncodedLen` for `NMapKey<frame_support::Twox64Concat, Bar>`
-   = note: required because of the requirements on the impl of `StorageInfoTrait` for `frame_support::pallet_prelude::StorageNMap<_GeneratedPrefixForStorageFoo<T>, NMapKey<frame_support::Twox64Concat, Bar>, u32>`
+   = note: required because of the requirements on the impl of `KeyGeneratorMaxEncodedLen` for `Key<frame_support::Twox64Concat, Bar>`
+   = note: required because of the requirements on the impl of `StorageInfoTrait` for `frame_support::pallet_prelude::StorageNMap<_GeneratedPrefixForStorageFoo<T>, Key<frame_support::Twox64Concat, Bar>, u32>`
    = note: required by `storage_info`
diff --git a/substrate/max-encoded-len/tests/max_encoded_len_ui/union.stderr b/substrate/max-encoded-len/tests/max_encoded_len_ui/union.stderr
index bc5519d674d9d736731687d932a543a056499818..d09a3f4673e188028d4ea033f7238d300972759f 100644
--- a/substrate/max-encoded-len/tests/max_encoded_len_ui/union.stderr
+++ b/substrate/max-encoded-len/tests/max_encoded_len_ui/union.stderr
@@ -1,10 +1,10 @@
-error: Union types are not supported
+error: Union types are not supported.
  --> $DIR/union.rs:5:1
   |
 5 | union Union {
   | ^^^^^
 
-error: Union types are not supported.
+error: Union types are not supported
  --> $DIR/union.rs:5:1
   |
 5 | union Union {
diff --git a/substrate/primitives/api/test/tests/ui/impl_incorrect_method_signature.stderr b/substrate/primitives/api/test/tests/ui/impl_incorrect_method_signature.stderr
index 6b00b7268672fa6718255c35bef6d5b0d8f933cb..9dd84c24b678142fe04e6467bbb5d0d138622871 100644
--- a/substrate/primitives/api/test/tests/ui/impl_incorrect_method_signature.stderr
+++ b/substrate/primitives/api/test/tests/ui/impl_incorrect_method_signature.stderr
@@ -5,7 +5,10 @@ error[E0053]: method `test` has an incompatible type for trait
    |                       --- type in trait
 ...
 19 |         fn test(data: String) {}
-   |                       ^^^^^^ expected `u64`, found struct `std::string::String`
+   |                       ^^^^^^
+   |                       |
+   |                       expected `u64`, found struct `std::string::String`
+   |                       help: change the parameter type to match the trait: `u64`
    |
    = note: expected fn pointer `fn(u64)`
               found fn pointer `fn(std::string::String)`
@@ -21,7 +24,17 @@ error[E0053]: method `Api_test_runtime_api_impl` has an incompatible type for tr
    | |_- type in trait
 16 |
 17 |   sp_api::impl_runtime_apis! {
-   |   ^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `u64`, found struct `std::string::String`
+   |   -^^^^^^^^^^^^^^^^^^^^^^^^^
+   |   |
+   |  _expected `u64`, found struct `std::string::String`
+   | |
+18 | |     impl self::Api<Block> for Runtime {
+19 | |         fn test(data: String) {}
+20 | |     }
+...  |
+32 | |     }
+33 | | }
+   | |_- help: change the parameter type to match the trait: `std::option::Option<u64>`
    |
    = note: expected fn pointer `fn(&RuntimeApiImpl<__SR_API_BLOCK__, RuntimeApiImplCall>, &BlockId<__SR_API_BLOCK__>, ExecutionContext, std::option::Option<u64>, Vec<_>) -> Result<_, _>`
               found fn pointer `fn(&RuntimeApiImpl<__SR_API_BLOCK__, RuntimeApiImplCall>, &BlockId<__SR_API_BLOCK__>, ExecutionContext, std::option::Option<std::string::String>, Vec<_>) -> Result<_, _>`
diff --git a/substrate/primitives/api/test/tests/ui/mock_only_self_reference.stderr b/substrate/primitives/api/test/tests/ui/mock_only_self_reference.stderr
index 83cfcf6ca1f9e0b3cc065648d5bb89d0d1f8547d..7385fe4745989bcab2fbffad78b06dc325e526a2 100644
--- a/substrate/primitives/api/test/tests/ui/mock_only_self_reference.stderr
+++ b/substrate/primitives/api/test/tests/ui/mock_only_self_reference.stderr
@@ -22,7 +22,17 @@ error[E0053]: method `Api_test_runtime_api_impl` has an incompatible type for tr
    | |_- type in trait
 ...
 12 |   sp_api::mock_impl_runtime_apis! {
-   |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `u64`, found `()`
+   |   -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |   |
+   |  _expected `u64`, found `()`
+   | |
+13 | |     impl Api<Block> for MockApi {
+14 | |         fn test(self, data: u64) {}
+15 | |
+16 | |         fn test2(&mut self, data: u64) {}
+17 | |     }
+18 | | }
+   | |_- help: change the parameter type to match the trait: `Option<u64>`
    |
    = note: expected fn pointer `fn(&MockApi, &BlockId<sp_runtime::generic::block::Block<sp_runtime::generic::header::Header<u64, sp_runtime::traits::BlakeTwo256>, Extrinsic>>, ExecutionContext, Option<u64>, Vec<_>) -> Result<_, _>`
               found fn pointer `fn(&MockApi, &BlockId<sp_runtime::generic::block::Block<sp_runtime::generic::header::Header<u64, sp_runtime::traits::BlakeTwo256>, Extrinsic>>, ExecutionContext, Option<()>, Vec<_>) -> Result<_, _>`
@@ -40,7 +50,17 @@ error[E0053]: method `Api_test2_runtime_api_impl` has an incompatible type for t
    | |_- type in trait
 ...
 12 |   sp_api::mock_impl_runtime_apis! {
-   |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `u64`, found `()`
+   |   -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |   |
+   |  _expected `u64`, found `()`
+   | |
+13 | |     impl Api<Block> for MockApi {
+14 | |         fn test(self, data: u64) {}
+15 | |
+16 | |         fn test2(&mut self, data: u64) {}
+17 | |     }
+18 | | }
+   | |_- help: change the parameter type to match the trait: `Option<u64>`
    |
    = note: expected fn pointer `fn(&MockApi, &BlockId<sp_runtime::generic::block::Block<sp_runtime::generic::header::Header<u64, sp_runtime::traits::BlakeTwo256>, Extrinsic>>, ExecutionContext, Option<u64>, Vec<_>) -> Result<_, _>`
               found fn pointer `fn(&MockApi, &BlockId<sp_runtime::generic::block::Block<sp_runtime::generic::header::Header<u64, sp_runtime::traits::BlakeTwo256>, Extrinsic>>, ExecutionContext, Option<()>, Vec<_>) -> Result<_, _>`
diff --git a/substrate/primitives/api/test/tests/ui/type_reference_in_impl_runtime_apis_call.stderr b/substrate/primitives/api/test/tests/ui/type_reference_in_impl_runtime_apis_call.stderr
index 689723f8d7509c2b9388bd31e73e14a69e3a7b52..a0a16c4a493dbaec464c538589c6b2d6ab7ba76e 100644
--- a/substrate/primitives/api/test/tests/ui/type_reference_in_impl_runtime_apis_call.stderr
+++ b/substrate/primitives/api/test/tests/ui/type_reference_in_impl_runtime_apis_call.stderr
@@ -5,7 +5,10 @@ error[E0053]: method `test` has an incompatible type for trait
    |                       --- type in trait
 ...
 19 |         fn test(data: &u64) {
-   |                       ^^^^ expected `u64`, found `&u64`
+   |                       ^^^^
+   |                       |
+   |                       expected `u64`, found `&u64`
+   |                       help: change the parameter type to match the trait: `u64`
    |
    = note: expected fn pointer `fn(u64)`
               found fn pointer `fn(&u64)`
@@ -21,7 +24,17 @@ error[E0053]: method `Api_test_runtime_api_impl` has an incompatible type for tr
    | |_- type in trait
 16 |
 17 |   sp_api::impl_runtime_apis! {
-   |   ^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `u64`, found `&u64`
+   |   -^^^^^^^^^^^^^^^^^^^^^^^^^
+   |   |
+   |  _expected `u64`, found `&u64`
+   | |
+18 | |     impl self::Api<Block> for Runtime {
+19 | |         fn test(data: &u64) {
+20 | |             unimplemented!()
+...  |
+34 | |     }
+35 | | }
+   | |_- help: change the parameter type to match the trait: `std::option::Option<u64>`
    |
    = note: expected fn pointer `fn(&RuntimeApiImpl<__SR_API_BLOCK__, RuntimeApiImplCall>, &BlockId<__SR_API_BLOCK__>, ExecutionContext, std::option::Option<u64>, Vec<_>) -> Result<_, _>`
               found fn pointer `fn(&RuntimeApiImpl<__SR_API_BLOCK__, RuntimeApiImplCall>, &BlockId<__SR_API_BLOCK__>, ExecutionContext, std::option::Option<&u64>, Vec<_>) -> Result<_, _>`