diff --git a/src/data.rs b/src/data.rs
index f54f5b9..d616832 100644
--- a/src/data.rs
+++ b/src/data.rs
@@ -268,6 +268,7 @@
             let pub_token = input.parse::<Token![pub]>()?;
 
             if input.peek(token::Paren) {
+                // TODO: optimize using advance_to
                 let ahead = input.fork();
                 let mut content;
                 parenthesized!(content in ahead);
diff --git a/src/expr.rs b/src/expr.rs
index 69f449d..1caa049 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -1234,6 +1234,7 @@
     // box <trailer>
     #[cfg(feature = "full")]
     fn unary_expr(input: ParseStream, allow_struct: AllowStruct) -> Result<Expr> {
+        // TODO: optimize using advance_to
         let ahead = input.fork();
         ahead.call(Attribute::parse_outer)?;
         if ahead.peek(Token![&])
@@ -1270,6 +1271,7 @@
 
     #[cfg(not(feature = "full"))]
     fn unary_expr(input: ParseStream, allow_struct: AllowStruct) -> Result<Expr> {
+        // TODO: optimize using advance_to
         let ahead = input.fork();
         ahead.call(Attribute::parse_outer)?;
         if ahead.peek(Token![*]) || ahead.peek(Token![!]) || ahead.peek(Token![-]) {
@@ -2185,6 +2187,7 @@
         let mut fields = Punctuated::new();
         loop {
             let attrs = content.call(Attribute::parse_outer)?;
+            // TODO: optimize using advance_to
             if content.fork().parse::<Member>().is_err() {
                 if attrs.is_empty() {
                     break;
@@ -2416,6 +2419,7 @@
 
     #[cfg(feature = "full")]
     fn parse_stmt(input: ParseStream, allow_nosemi: bool) -> Result<Stmt> {
+        // TODO: optimize using advance_to
         let ahead = input.fork();
         ahead.call(Attribute::parse_outer)?;
 
diff --git a/src/item.rs b/src/item.rs
index a8f19a0..aaa99f9 100644
--- a/src/item.rs
+++ b/src/item.rs
@@ -767,6 +767,7 @@
 
     impl Parse for Item {
         fn parse(input: ParseStream) -> Result<Self> {
+            // TODO: optimize using advance_to
             let ahead = input.fork();
             ahead.call(Attribute::parse_outer)?;
             let vis: Visibility = ahead.parse()?;
@@ -1139,6 +1140,8 @@
 
     impl Parse for FnArg {
         fn parse(input: ParseStream) -> Result<Self> {
+            // TODO: optimize using advance_to
+
             if input.peek(Token![&]) {
                 let ahead = input.fork();
                 if ahead.call(arg_self_ref).is_ok() && !ahead.peek(Token![:]) {
@@ -1273,6 +1276,7 @@
 
     impl Parse for ForeignItem {
         fn parse(input: ParseStream) -> Result<Self> {
+            // TODO: optimize using advance_to
             let ahead = input.fork();
             ahead.call(Attribute::parse_outer)?;
             let vis: Visibility = ahead.parse()?;
@@ -1664,6 +1668,7 @@
 
     impl Parse for TraitItem {
         fn parse(input: ParseStream) -> Result<Self> {
+            // TODO: optimize using advance_to
             let ahead = input.fork();
             ahead.call(Attribute::parse_outer)?;
 
@@ -1864,6 +1869,7 @@
             };
 
             let trait_ = {
+                // TODO: optimize using advance_to
                 let ahead = input.fork();
                 if ahead.parse::<Option<Token![!]>>().is_ok()
                     && ahead.parse::<Path>().is_ok()
@@ -1908,6 +1914,7 @@
 
     impl Parse for ImplItem {
         fn parse(input: ParseStream) -> Result<Self> {
+            // TODO: optimize using advance_to
             let ahead = input.fork();
             ahead.call(Attribute::parse_outer)?;
             let vis: Visibility = ahead.parse()?;
