diff --git a/src/stable.rs b/src/stable.rs
index 8091415..73912f5 100644
--- a/src/stable.rs
+++ b/src/stable.rs
@@ -1,13 +1,11 @@
 #![cfg_attr(not(procmacro2_semver_exempt), allow(dead_code))]
 
-use std::borrow::Borrow;
+#[cfg(procmacro2_semver_exempt)]
 use std::cell::RefCell;
 #[cfg(procmacro2_semver_exempt)]
 use std::cmp;
-use std::collections::HashMap;
 use std::fmt;
 use std::iter;
-use std::rc::Rc;
 use std::str::FromStr;
 use std::vec;
 
@@ -416,19 +414,17 @@
 
 #[derive(Clone)]
 pub struct Ident {
-    intern: usize,
+    sym: String,
     span: Span,
     raw: bool,
 }
 
-thread_local!(static SYMBOLS: RefCell<Interner> = RefCell::new(Interner::new()));
-
 impl Ident {
     fn _new(string: &str, raw: bool, span: Span) -> Ident {
         validate_term(string);
 
         Ident {
-            intern: SYMBOLS.with(|s| s.borrow_mut().intern(string)),
+            sym: string.to_owned(),
             span: span,
             raw: raw,
         }
@@ -442,14 +438,6 @@
         Ident::_new(string, true, span)
     }
 
-    pub fn as_str(&self) -> &str {
-        SYMBOLS.with(|interner| {
-            let interner = interner.borrow();
-            let s = interner.get(self.intern);
-            unsafe { &*(s as *const str) }
-        })
-    }
-
     pub fn span(&self) -> Span {
         self.span
     }
@@ -510,7 +498,7 @@
         if self.raw {
             "r#".fmt(f)?;
         }
-        self.as_str().fmt(f)
+        self.sym.fmt(f)
     }
 }
 
@@ -536,44 +524,6 @@
     }
 }
 
-struct Interner {
-    string_to_index: HashMap<MyRc, usize>,
-    index_to_string: Vec<Rc<String>>,
-}
-
-#[derive(Hash, Eq, PartialEq)]
-struct MyRc(Rc<String>);
-
-impl Borrow<str> for MyRc {
-    fn borrow(&self) -> &str {
-        &self.0
-    }
-}
-
-impl Interner {
-    fn new() -> Interner {
-        Interner {
-            string_to_index: HashMap::new(),
-            index_to_string: Vec::new(),
-        }
-    }
-
-    fn intern(&mut self, s: &str) -> usize {
-        if let Some(&idx) = self.string_to_index.get(s) {
-            return idx;
-        }
-        let s = Rc::new(s.to_string());
-        self.index_to_string.push(s.clone());
-        self.string_to_index
-            .insert(MyRc(s), self.index_to_string.len() - 1);
-        self.index_to_string.len() - 1
-    }
-
-    fn get(&self, idx: usize) -> &str {
-        &self.index_to_string[idx]
-    }
-}
-
 #[derive(Clone)]
 pub struct Literal {
     text: String,
