Remove PathTokens from public API
diff --git a/src/expr.rs b/src/expr.rs
index 809463a..9440c1c 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -3473,7 +3473,7 @@
     impl ToTokens for ExprPath {
         fn to_tokens(&self, tokens: &mut TokenStream) {
             outer_attrs_to_tokens(&self.attrs, tokens);
-            ::PathTokens(&self.qself, &self.path).to_tokens(tokens)
+            private::print_path(tokens, &self.qself, &self.path);
         }
     }
 
@@ -3669,7 +3669,7 @@
     #[cfg(feature = "full")]
     impl ToTokens for PatPath {
         fn to_tokens(&self, tokens: &mut TokenStream) {
-            ::PathTokens(&self.qself, &self.path).to_tokens(tokens);
+            private::print_path(tokens, &self.qself, &self.path);
         }
     }
 
diff --git a/src/lib.rs b/src/lib.rs
index b32d67c..6308b76 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -424,11 +424,6 @@
 
 #[cfg(any(feature = "full", feature = "derive"))]
 mod path;
-#[cfg(all(
-    any(feature = "full", feature = "derive"),
-    feature = "printing"
-))]
-pub use path::PathTokens;
 #[cfg(any(feature = "full", feature = "derive"))]
 pub use path::{
     AngleBracketedGenericArguments, Binding, GenericArgument, ParenthesizedGenericArguments, Path,
diff --git a/src/path.rs b/src/path.rs
index 9b4b9ff..443bac6 100644
--- a/src/path.rs
+++ b/src/path.rs
@@ -20,38 +20,6 @@
     }
 }
 
-/// A helper for printing a self-type qualified path as tokens.
-///
-/// ```rust
-/// # extern crate syn;
-/// # extern crate quote;
-/// # extern crate proc_macro2;
-/// #
-/// use proc_macro2::TokenStream;
-/// use quote::ToTokens;
-/// use syn::{QSelf, Path, PathTokens};
-///
-/// struct MyNode {
-///     qself: Option<QSelf>,
-///     path: Path,
-/// }
-///
-/// impl ToTokens for MyNode {
-///     fn to_tokens(&self, tokens: &mut TokenStream) {
-///         PathTokens(&self.qself, &self.path).to_tokens(tokens);
-///     }
-/// }
-/// #
-/// # fn main() {}
-/// ```
-///
-/// *This type is available if Syn is built with the `"derive"` or `"full"`
-/// feature and the `"printing"` feature.*
-#[cfg(feature = "printing")]
-#[cfg_attr(feature = "extra-traits", derive(Debug, Eq, PartialEq, Hash))]
-#[cfg_attr(feature = "clone-impls", derive(Clone))]
-pub struct PathTokens<'a>(pub &'a Option<QSelf>, pub &'a Path);
-
 impl<T> From<T> for Path
 where
     T: Into<PathSegment>,
@@ -609,24 +577,27 @@
         }
     }
 
-    impl<'a> ToTokens for PathTokens<'a> {
-        fn to_tokens(&self, tokens: &mut TokenStream) {
-            let qself = match *self.0 {
+    impl private {
+        pub fn print_path(tokens: &mut TokenStream, qself: &Option<QSelf>, path: &Path) {
+            let qself = match *qself {
                 Some(ref qself) => qself,
-                None => return self.1.to_tokens(tokens),
+                None => {
+                    path.to_tokens(tokens);
+                    return;
+                }
             };
             qself.lt_token.to_tokens(tokens);
             qself.ty.to_tokens(tokens);
 
-            let pos = if qself.position > 0 && qself.position >= self.1.segments.len() {
-                self.1.segments.len() - 1
+            let pos = if qself.position > 0 && qself.position >= path.segments.len() {
+                path.segments.len() - 1
             } else {
                 qself.position
             };
-            let mut segments = self.1.segments.pairs();
+            let mut segments = path.segments.pairs();
             if pos > 0 {
                 TokensOrDefault(&qself.as_token).to_tokens(tokens);
-                self.1.leading_colon.to_tokens(tokens);
+                path.leading_colon.to_tokens(tokens);
                 for (i, segment) in segments.by_ref().take(pos).enumerate() {
                     if i + 1 == pos {
                         segment.value().to_tokens(tokens);
@@ -638,7 +609,7 @@
                 }
             } else {
                 qself.gt_token.to_tokens(tokens);
-                self.1.leading_colon.to_tokens(tokens);
+                path.leading_colon.to_tokens(tokens);
             }
             for segment in segments {
                 segment.to_tokens(tokens);
diff --git a/src/ty.rs b/src/ty.rs
index 2c0a10e..29f2311 100644
--- a/src/ty.rs
+++ b/src/ty.rs
@@ -839,7 +839,7 @@
 
     impl ToTokens for TypePath {
         fn to_tokens(&self, tokens: &mut TokenStream) {
-            PathTokens(&self.qself, &self.path).to_tokens(tokens);
+            private::print_path(tokens, &self.qself, &self.path);
         }
     }