diff --git a/.cargo_vcs_info.json b/.cargo_vcs_info.json
new file mode 100644
index 0000000..8216174
--- /dev/null
+++ b/.cargo_vcs_info.json
@@ -0,0 +1,5 @@
+{
+  "git": {
+    "sha1": "d29a20e44207f915f42e6d1668d2864b0152e5a8"
+  }
+}
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..e6abbe4
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,8 @@
+// This file is generated by cargo2android.py.
+
+rust_library_host_rlib {
+    name: "libproc_macro_nested",
+    crate_name: "proc_macro_nested",
+    srcs: ["src/lib.rs"],
+    edition: "2015",
+}
diff --git a/Cargo.toml b/Cargo.toml
new file mode 100644
index 0000000..f417011
--- /dev/null
+++ b/Cargo.toml
@@ -0,0 +1,19 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies
+#
+# If you believe there's an error in this file please file an
+# issue against the rust-lang/cargo repository. If you're
+# editing this file be aware that the upstream Cargo.toml
+# will likely look very different (and much more reasonable)
+
+[package]
+name = "proc-macro-nested"
+version = "0.1.4"
+authors = ["David Tolnay <dtolnay@gmail.com>"]
+description = "Support for nested proc-macro-hack invocations"
+license = "MIT OR Apache-2.0"
+repository = "https://github.com/dtolnay/proc-macro-hack"
diff --git a/Cargo.toml.orig b/Cargo.toml.orig
new file mode 100644
index 0000000..3d64155
--- /dev/null
+++ b/Cargo.toml.orig
@@ -0,0 +1,7 @@
+[package]
+name = "proc-macro-nested"
+version = "0.1.4"
+authors = ["David Tolnay <dtolnay@gmail.com>"]
+license = "MIT OR Apache-2.0"
+description = "Support for nested proc-macro-hack invocations"
+repository = "https://github.com/dtolnay/proc-macro-hack"
diff --git a/LICENSE b/LICENSE
new file mode 120000
index 0000000..6b579aa
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1 @@
+LICENSE-APACHE
\ No newline at end of file
diff --git a/LICENSE-APACHE b/LICENSE-APACHE
new file mode 100644
index 0000000..16fe87b
--- /dev/null
+++ b/LICENSE-APACHE
@@ -0,0 +1,201 @@
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/LICENSE-MIT b/LICENSE-MIT
new file mode 100644
index 0000000..f2675cd
--- /dev/null
+++ b/LICENSE-MIT
@@ -0,0 +1,25 @@
+Copyright (c) 2018 David Tolnay
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/METADATA b/METADATA
new file mode 100644
index 0000000..623843d
--- /dev/null
+++ b/METADATA
@@ -0,0 +1,17 @@
+name: "proc-macro-nested"
+description:
+    "Support for nested proc-macro-hack invocations"
+
+third_party {
+  url {
+    type: HOMEPAGE
+    value: "https://crates.io/crates/proc-macro-nested"
+  }
+  url {
+    type: GIT
+    value: "https://github.com/dtolnay/proc-macro-hack"
+  }
+  version: "d29a20e44207f915f42e6d1668d2864b0152e5a8"
+  last_upgrade_date { year: 2020 month: 3 day: 17 }
+  license_type: NOTICE
+}
diff --git a/MODULE_LICENSE_APACHE2 b/MODULE_LICENSE_APACHE2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/MODULE_LICENSE_APACHE2
diff --git a/NOTICE b/NOTICE
new file mode 120000
index 0000000..7a694c9
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1 @@
+LICENSE
\ No newline at end of file
diff --git a/build.rs b/build.rs
new file mode 100644
index 0000000..b4aec63
--- /dev/null
+++ b/build.rs
@@ -0,0 +1,41 @@
+use std::env;
+use std::fs::File;
+use std::io::Write;
+use std::iter;
+use std::path::Path;
+
+/*
+#[doc(hidden)]
+#[macro_export]
+macro_rules! count {
+    () => { proc_macro_call_0!() };
+    (!) => { proc_macro_call_1!() };
+    (!!) => { proc_macro_call_2!() };
+    ...
+}
+*/
+
+fn main() {
+    let out_dir = env::var("OUT_DIR").unwrap();
+    let dest_path = Path::new(&out_dir).join("count.rs");
+    let mut f = File::create(&dest_path).unwrap();
+
+    let mut content = String::new();
+    content += "
+        #[doc(hidden)]
+        #[macro_export]
+        macro_rules! count {
+    ";
+    for i in 0..=64 {
+        let bangs = iter::repeat("!").take(i).collect::<String>();
+        content += &format!("({}) => {{ proc_macro_call_{}!() }};", bangs, i);
+    }
+    content += "
+            ($(!)+) => {
+                compile_error!(\"this macro does not support >64 nested macro invocations\")
+            };
+        }
+    ";
+
+    f.write_all(content.as_bytes()).unwrap();
+}
diff --git a/out/count.rs b/out/count.rs
new file mode 100644
index 0000000..de54fc6
--- /dev/null
+++ b/out/count.rs
@@ -0,0 +1,10 @@
+
+        #[doc(hidden)]
+        #[macro_export]
+        macro_rules! count {
+    () => { proc_macro_call_0!() };(!) => { proc_macro_call_1!() };(!!) => { proc_macro_call_2!() };(!!!) => { proc_macro_call_3!() };(!!!!) => { proc_macro_call_4!() };(!!!!!) => { proc_macro_call_5!() };(!!!!!!) => { proc_macro_call_6!() };(!!!!!!!) => { proc_macro_call_7!() };(!!!!!!!!) => { proc_macro_call_8!() };(!!!!!!!!!) => { proc_macro_call_9!() };(!!!!!!!!!!) => { proc_macro_call_10!() };(!!!!!!!!!!!) => { proc_macro_call_11!() };(!!!!!!!!!!!!) => { proc_macro_call_12!() };(!!!!!!!!!!!!!) => { proc_macro_call_13!() };(!!!!!!!!!!!!!!) => { proc_macro_call_14!() };(!!!!!!!!!!!!!!!) => { proc_macro_call_15!() };(!!!!!!!!!!!!!!!!) => { proc_macro_call_16!() };(!!!!!!!!!!!!!!!!!) => { proc_macro_call_17!() };(!!!!!!!!!!!!!!!!!!) => { proc_macro_call_18!() };(!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_19!() };(!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_20!() };(!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_21!() };(!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_22!() };(!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_23!() };(!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_24!() };(!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_25!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_26!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_27!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_28!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_29!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_30!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_31!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_32!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_33!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_34!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_35!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_36!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_37!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_38!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_39!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_40!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_41!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_42!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_43!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_44!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_45!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_46!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_47!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_48!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_49!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_50!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_51!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_52!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_53!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_54!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_55!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_56!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_57!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_58!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_59!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_60!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_61!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_62!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_63!() };(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => { proc_macro_call_64!() };
+            ($(!)+) => {
+                compile_error!("this macro does not support >64 nested macro invocations")
+            };
+        }
+    
\ No newline at end of file
diff --git a/src/lib.rs b/src/lib.rs
new file mode 100644
index 0000000..529ee4a
--- /dev/null
+++ b/src/lib.rs
@@ -0,0 +1,71 @@
+//! Support for nested invocations of proc-macro-hack expression macros.
+//!
+//! By default, macros defined through proc-macro-hack do not support nested
+//! invocations, i.e. the code emitted by a proc-macro-hack macro invocation
+//! cannot contain recursive calls to the same proc-macro-hack macro nor calls
+//! to any other proc-macro-hack macros.
+//!
+//! This crate provides opt-in support for such nested invocations.
+//!
+//! To make a macro callable recursively, add a dependency on this crate from
+//! your declaration crate and update the `#[proc_macro_hack]` re-export as
+//! follows.
+//!
+//! ```
+//! // Before
+//! # const IGNORE: &str = stringify! {
+//! #[proc_macro_hack]
+//! pub use demo_hack_impl::add_one;
+//! # };
+//! ```
+//!
+//! ```
+//! // After
+//! # const IGNORE: &str = stringify! {
+//! #[proc_macro_hack(support_nested)]
+//! pub use demo_hack_impl::add_one;
+//! # };
+//! ```
+//!
+//! No change is required within your definition crate, only to the re-export in
+//! the declaration crate.
+//!
+//! # Limitations
+//!
+//! - Nested invocations are preprocessed by a TT-muncher, so the caller's crate
+//!   will be required to contain `#![recursion_limit = "..."]` if there are
+//!   lengthy macro invocations.
+//!
+//! - Only up to 64 nested invocations are supported.
+
+#![no_std]
+
+// ANDROID: count.rs generated and put in the out subdirectory.
+// include!(concat!(env!("OUT_DIR"), "/count.rs"));
+include!("../out/count.rs");
+
+#[doc(hidden)]
+#[macro_export]
+macro_rules! dispatch {
+    (() $($bang:tt)*) => {
+        $crate::count!($($bang)*)
+    };
+    ((($($first:tt)*) $($rest:tt)*) $($bang:tt)*) => {
+        $crate::dispatch!(($($first)* $($rest)*) $($bang)*)
+    };
+    (([$($first:tt)*] $($rest:tt)*) $($bang:tt)*) => {
+        $crate::dispatch!(($($first)* $($rest)*) $($bang)*)
+    };
+    (({$($first:tt)*} $($rest:tt)*) $($bang:tt)*) => {
+        $crate::dispatch!(($($first)* $($rest)*) $($bang)*)
+    };
+    ((! $($rest:tt)*) $($bang:tt)*) => {
+        $crate::dispatch!(($($rest)*) $($bang)* !)
+    };
+    ((!= $($rest:tt)*) $($bang:tt)*) => {
+        $crate::dispatch!(($($rest)*) $($bang)* !)
+    };
+    (($first:tt $($rest:tt)*) $($bang:tt)*) => {
+        $crate::dispatch!(($($rest)*) $($bang)*)
+    };
+}
