diff --git a/xfa/fxfa/fm2js/cxfa_fmlexer.cpp b/xfa/fxfa/fm2js/cxfa_fmlexer.cpp
index 159910f..b6eb7ea 100644
--- a/xfa/fxfa/fm2js/cxfa_fmlexer.cpp
+++ b/xfa/fxfa/fm2js/cxfa_fmlexer.cpp
@@ -115,16 +115,16 @@
 
 }  // namespace
 
-CXFA_FMToken::CXFA_FMToken(XFA_FM_TOKEN token) : m_type(token) {}
+CXFA_FMLexer::Token::Token(XFA_FM_TOKEN token) : m_type(token) {}
 
-CXFA_FMToken::CXFA_FMToken() : CXFA_FMToken(TOKreserver) {}
+CXFA_FMLexer::Token::Token() : Token(TOKreserver) {}
 
-CXFA_FMToken::CXFA_FMToken(const CXFA_FMToken&) = default;
+CXFA_FMLexer::Token::Token(const Token& that) = default;
 
-CXFA_FMToken::~CXFA_FMToken() = default;
+CXFA_FMLexer::Token::~Token() = default;
 
 #ifndef NDEBUG
-WideString CXFA_FMToken::ToDebugString() const {
+WideString CXFA_FMLexer::Token::ToDebugString() const {
   WideString str = WideString::FromASCII("type = ");
   str += WideString::FromASCII(tokenStrings[m_type]);
   str += WideString::FromASCII(", string = ");
@@ -138,14 +138,14 @@
 
 CXFA_FMLexer::~CXFA_FMLexer() = default;
 
-CXFA_FMToken CXFA_FMLexer::NextToken() {
+CXFA_FMLexer::Token CXFA_FMLexer::NextToken() {
   if (m_bLexerError)
-    return CXFA_FMToken();
+    return Token();
 
   while (!IsComplete() && m_spInput[m_nCursor]) {
     if (!IsFormCalcCharacter(m_spInput[m_nCursor])) {
       RaiseError();
-      return CXFA_FMToken();
+      return Token();
     }
 
     switch (m_spInput[m_nCursor]) {
@@ -174,90 +174,90 @@
       case '=':
         ++m_nCursor;
         if (m_nCursor >= m_spInput.size())
-          return CXFA_FMToken(TOKassign);
+          return Token(TOKassign);
 
         if (!IsFormCalcCharacter(m_spInput[m_nCursor])) {
           RaiseError();
-          return CXFA_FMToken();
+          return Token();
         }
         if (m_spInput[m_nCursor] == '=') {
           ++m_nCursor;
-          return CXFA_FMToken(TOKeq);
+          return Token(TOKeq);
         }
-        return CXFA_FMToken(TOKassign);
+        return Token(TOKassign);
       case '<':
         ++m_nCursor;
         if (m_nCursor >= m_spInput.size())
-          return CXFA_FMToken(TOKlt);
+          return Token(TOKlt);
 
         if (!IsFormCalcCharacter(m_spInput[m_nCursor])) {
           RaiseError();
-          return CXFA_FMToken();
+          return Token();
         }
         if (m_spInput[m_nCursor] == '=') {
           ++m_nCursor;
-          return CXFA_FMToken(TOKle);
+          return Token(TOKle);
         }
         if (m_spInput[m_nCursor] == '>') {
           ++m_nCursor;
-          return CXFA_FMToken(TOKne);
+          return Token(TOKne);
         }
-        return CXFA_FMToken(TOKlt);
+        return Token(TOKlt);
       case '>':
         ++m_nCursor;
         if (m_nCursor >= m_spInput.size())
-          return CXFA_FMToken(TOKgt);
+          return Token(TOKgt);
 
         if (!IsFormCalcCharacter(m_spInput[m_nCursor])) {
           RaiseError();
-          return CXFA_FMToken();
+          return Token();
         }
         if (m_spInput[m_nCursor] == '=') {
           ++m_nCursor;
-          return CXFA_FMToken(TOKge);
+          return Token(TOKge);
         }
-        return CXFA_FMToken(TOKgt);
+        return Token(TOKgt);
       case ',':
         ++m_nCursor;
-        return CXFA_FMToken(TOKcomma);
+        return Token(TOKcomma);
       case '(':
         ++m_nCursor;
-        return CXFA_FMToken(TOKlparen);
+        return Token(TOKlparen);
       case ')':
         ++m_nCursor;
-        return CXFA_FMToken(TOKrparen);
+        return Token(TOKrparen);
       case '[':
         ++m_nCursor;
-        return CXFA_FMToken(TOKlbracket);
+        return Token(TOKlbracket);
       case ']':
         ++m_nCursor;
-        return CXFA_FMToken(TOKrbracket);
+        return Token(TOKrbracket);
       case '&':
         ++m_nCursor;
-        return CXFA_FMToken(TOKand);
+        return Token(TOKand);
       case '|':
         ++m_nCursor;
-        return CXFA_FMToken(TOKor);
+        return Token(TOKor);
       case '+':
         ++m_nCursor;
-        return CXFA_FMToken(TOKplus);
+        return Token(TOKplus);
       case '-':
         ++m_nCursor;
-        return CXFA_FMToken(TOKminus);
+        return Token(TOKminus);
       case '*':
         ++m_nCursor;
-        return CXFA_FMToken(TOKmul);
+        return Token(TOKmul);
       case '/': {
         ++m_nCursor;
         if (m_nCursor >= m_spInput.size())
-          return CXFA_FMToken(TOKdiv);
+          return Token(TOKdiv);
 
         if (!IsFormCalcCharacter(m_spInput[m_nCursor])) {
           RaiseError();
-          return CXFA_FMToken();
+          return Token();
         }
         if (m_spInput[m_nCursor] != '/')
-          return CXFA_FMToken(TOKdiv);
+          return Token(TOKdiv);
 
         AdvanceForComment();
         break;
@@ -265,30 +265,30 @@
       case '.':
         ++m_nCursor;
         if (m_nCursor >= m_spInput.size())
-          return CXFA_FMToken(TOKdot);
+          return Token(TOKdot);
 
         if (!IsFormCalcCharacter(m_spInput[m_nCursor])) {
           RaiseError();
-          return CXFA_FMToken();
+          return Token();
         }
 
         if (m_spInput[m_nCursor] == '.') {
           ++m_nCursor;
-          return CXFA_FMToken(TOKdotdot);
+          return Token(TOKdotdot);
         }
         if (m_spInput[m_nCursor] == '*') {
           ++m_nCursor;
-          return CXFA_FMToken(TOKdotstar);
+          return Token(TOKdotstar);
         }
         if (m_spInput[m_nCursor] == '#') {
           ++m_nCursor;
-          return CXFA_FMToken(TOKdotscream);
+          return Token(TOKdotscream);
         }
         if (FXSYS_IsDecimalDigit(m_spInput[m_nCursor])) {
           --m_nCursor;
           return AdvanceForNumber();
         }
-        return CXFA_FMToken(TOKdot);
+        return Token(TOKdot);
       default:
         if (IsWhitespaceCharacter(m_spInput[m_nCursor])) {
           ++m_nCursor;
@@ -296,15 +296,15 @@
         }
         if (!IsInitialIdentifierCharacter(m_spInput[m_nCursor])) {
           RaiseError();
-          return CXFA_FMToken();
+          return Token();
         }
         return AdvanceForIdentifier();
     }
   }
-  return CXFA_FMToken(TOKeof);
+  return Token(TOKeof);
 }
 
-CXFA_FMToken CXFA_FMLexer::AdvanceForNumber() {
+CXFA_FMLexer::Token CXFA_FMLexer::AdvanceForNumber() {
   // This will set end to the character after the end of the number.
   int32_t used_length = 0;
   if (m_nCursor < m_spInput.size()) {
@@ -315,17 +315,17 @@
   if (used_length == 0 ||
       (end < m_spInput.size() && FXSYS_iswalpha(m_spInput[end]))) {
     RaiseError();
-    return CXFA_FMToken();
+    return Token();
   }
-  CXFA_FMToken token(TOKnumber);
+  Token token(TOKnumber);
   token.m_string =
       WideStringView(m_spInput.subspan(m_nCursor, end - m_nCursor));
   m_nCursor = end;
   return token;
 }
 
-CXFA_FMToken CXFA_FMLexer::AdvanceForString() {
-  CXFA_FMToken token(TOKstring);
+CXFA_FMLexer::Token CXFA_FMLexer::AdvanceForString() {
+  Token token(TOKstring);
   size_t start = m_nCursor;
   ++m_nCursor;
   while (!IsComplete() && m_spInput[m_nCursor]) {
@@ -357,16 +357,16 @@
 
   // Didn't find the end of the string.
   RaiseError();
-  return CXFA_FMToken();
+  return Token();
 }
 
-CXFA_FMToken CXFA_FMLexer::AdvanceForIdentifier() {
+CXFA_FMLexer::Token CXFA_FMLexer::AdvanceForIdentifier() {
   size_t start = m_nCursor;
   ++m_nCursor;
   while (!IsComplete() && m_spInput[m_nCursor]) {
     if (!IsFormCalcCharacter(m_spInput[m_nCursor])) {
       RaiseError();
-      return CXFA_FMToken();
+      return Token();
     }
     if (!IsIdentifierCharacter(m_spInput[m_nCursor]))
       break;
@@ -376,7 +376,7 @@
 
   WideStringView str =
       WideStringView(m_spInput.subspan(start, m_nCursor - start));
-  CXFA_FMToken token(TokenizeIdentifier(str));
+  Token token(TokenizeIdentifier(str));
   token.m_string = str;
   return token;
 }
diff --git a/xfa/fxfa/fm2js/cxfa_fmlexer.h b/xfa/fxfa/fm2js/cxfa_fmlexer.h
index fe55a12..d820186 100644
--- a/xfa/fxfa/fm2js/cxfa_fmlexer.h
+++ b/xfa/fxfa/fm2js/cxfa_fmlexer.h
@@ -81,35 +81,34 @@
   TOKreserver
 };
 
-class CXFA_FMToken {
- public:
-  CXFA_FMToken();
-  explicit CXFA_FMToken(XFA_FM_TOKEN token);
-  CXFA_FMToken(const CXFA_FMToken&);
-  ~CXFA_FMToken();
-
-#ifndef NDEBUG
-  WideString ToDebugString() const;
-#endif  // NDEBUG
-
-  WideStringView m_string;
-  XFA_FM_TOKEN m_type;
-};
-
 class CXFA_FMLexer {
   CPPGC_STACK_ALLOCATED();  // Raw pointers allowed.
 
  public:
+  struct Token {
+    Token();
+    explicit Token(XFA_FM_TOKEN token);
+    Token(const Token& that);
+    ~Token();
+
+#ifndef NDEBUG
+    WideString ToDebugString() const;
+#endif  // NDEBUG
+
+    WideStringView m_string;
+    XFA_FM_TOKEN m_type;
+  };
+
   explicit CXFA_FMLexer(WideStringView wsFormcalc);
   ~CXFA_FMLexer();
 
-  CXFA_FMToken NextToken();
+  Token NextToken();
   bool IsComplete() const { return m_nCursor >= m_spInput.size(); }
 
  private:
-  CXFA_FMToken AdvanceForNumber();
-  CXFA_FMToken AdvanceForString();
-  CXFA_FMToken AdvanceForIdentifier();
+  Token AdvanceForNumber();
+  Token AdvanceForString();
+  Token AdvanceForIdentifier();
   void AdvanceForComment();
 
   void RaiseError() { m_bLexerError = true; }
diff --git a/xfa/fxfa/fm2js/cxfa_fmlexer_unittest.cpp b/xfa/fxfa/fm2js/cxfa_fmlexer_unittest.cpp
index 3f5eacc..6ecc3b9 100644
--- a/xfa/fxfa/fm2js/cxfa_fmlexer_unittest.cpp
+++ b/xfa/fxfa/fm2js/cxfa_fmlexer_unittest.cpp
@@ -13,14 +13,14 @@
 TEST(CXFA_FMLexerTest, NullString) {
   WideStringView null_string;
   CXFA_FMLexer lexer(null_string);
-  CXFA_FMToken token = lexer.NextToken();
+  CXFA_FMLexer::Token token = lexer.NextToken();
   EXPECT_EQ(TOKeof, token.m_type);
   EXPECT_TRUE(lexer.IsComplete());
 }
 
 TEST(CXFA_FMLexerTest, EmptyString) {
   CXFA_FMLexer lexer(L"");
-  CXFA_FMToken token = lexer.NextToken();
+  CXFA_FMLexer::Token token = lexer.NextToken();
   EXPECT_EQ(TOKeof, token.m_type);
   EXPECT_TRUE(lexer.IsComplete());
 }
@@ -28,7 +28,7 @@
 TEST(CXFA_FMLexerTest, Numbers) {
   {
     CXFA_FMLexer lexer(L"-12");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     // TODO(dsinclair): Should this return -12 instead of two tokens?
     EXPECT_EQ(TOKminus, token.m_type);
     token = lexer.NextToken();
@@ -38,31 +38,31 @@
   }
   {
     CXFA_FMLexer lexer(L"1.5362");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(TOKnumber, token.m_type);
     EXPECT_EQ(L"1.5362", token.m_string);
   }
   {
     CXFA_FMLexer lexer(L"0.875");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(TOKnumber, token.m_type);
     EXPECT_EQ(L"0.875", token.m_string);
   }
   {
     CXFA_FMLexer lexer(L"5.56e-2");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(TOKnumber, token.m_type);
     EXPECT_EQ(L"5.56e-2", token.m_string);
   }
   {
     CXFA_FMLexer lexer(L"1.234E10");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(TOKnumber, token.m_type);
     EXPECT_EQ(L"1.234E10", token.m_string);
   }
   {
     CXFA_FMLexer lexer(L"123456789.012345678");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(TOKnumber, token.m_type);
     // TODO(dsinclair): This should round as per IEEE 64-bit values.
     // EXPECT_EQ(L"123456789.01234567", token.m_string);
@@ -70,7 +70,7 @@
   }
   {
     CXFA_FMLexer lexer(L"99999999999999999");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(TOKnumber, token.m_type);
     // TODO(dsinclair): This is spec'd as rounding when > 16 significant digits
     // prior to the exponent.
@@ -84,7 +84,7 @@
 TEST(CXFA_FMLexerTest, Strings) {
   {
     CXFA_FMLexer lexer(L"\"The cat jumped over the fence.\"");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(TOKstring, token.m_type);
     EXPECT_EQ(L"\"The cat jumped over the fence.\"", token.m_string);
 
@@ -93,14 +93,14 @@
   }
   {
     CXFA_FMLexer lexer(L"\"\"");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(TOKstring, token.m_type);
     EXPECT_EQ(L"\"\"", token.m_string);
   }
   {
     CXFA_FMLexer lexer(
         L"\"The message reads: \"\"Warning: Insufficient Memory\"\"\"");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(TOKstring, token.m_type);
     EXPECT_EQ(L"\"The message reads: \"\"Warning: Insufficient Memory\"\"\"",
               token.m_string);
@@ -108,7 +108,7 @@
   {
     CXFA_FMLexer lexer(
         L"\"\\u0047\\u006f\\u0066\\u0069\\u0073\\u0068\\u0021\\u000d\\u000a\"");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(TOKstring, token.m_type);
     EXPECT_EQ(
         L"\"\\u0047\\u006f\\u0066\\u0069\\u0073\\u0068\\u0021\\u000d\\u000a\"",
@@ -184,7 +184,7 @@
 
   for (size_t i = 0; i < pdfium::size(op); ++i) {
     CXFA_FMLexer lexer(op[i].op);
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(op[i].token, token.m_type);
     EXPECT_TRUE(lexer.IsComplete());
   }
@@ -193,17 +193,17 @@
 TEST(CXFA_FMLexerTest, Comments) {
   {
     CXFA_FMLexer lexer(L"// Empty.");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(TOKeof, token.m_type);
   }
   {
     CXFA_FMLexer lexer(L"//");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(TOKeof, token.m_type);
   }
   {
     CXFA_FMLexer lexer(L"123 // Empty.\n\"str\"");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(TOKnumber, token.m_type);
     EXPECT_EQ(L"123", token.m_string);
 
@@ -216,17 +216,17 @@
   }
   {
     CXFA_FMLexer lexer(L";");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(TOKeof, token.m_type);
   }
   {
     CXFA_FMLexer lexer(L"; Empty.");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(TOKeof, token.m_type);
   }
   {
     CXFA_FMLexer lexer(L"123 ;Empty.\n\"str\"");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(TOKnumber, token.m_type);
     EXPECT_EQ(L"123", token.m_string);
 
@@ -245,7 +245,7 @@
       L"a", L"an_identifier", L"_ident", L"$ident", L"!ident", L"GetAddr"};
   for (const auto* ident : identifiers) {
     CXFA_FMLexer lexer(ident);
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(TOKidentifier, token.m_type);
     EXPECT_EQ(ident, token.m_string);
     EXPECT_TRUE(lexer.IsComplete());
@@ -255,17 +255,17 @@
 TEST(CXFA_FMLexerTest, InvalidIdentifiers) {
   {
     CXFA_FMLexer lexer(L"#a");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(TOKreserver, token.m_type);
   }
   {
     CXFA_FMLexer lexer(L"1a");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(TOKreserver, token.m_type);
   }
   {
     CXFA_FMLexer lexer(L"an@identifier");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_NE(TOKreserver, token.m_type);
     token = lexer.NextToken();
     EXPECT_EQ(TOKreserver, token.m_type);
@@ -274,7 +274,7 @@
   }
   {
     CXFA_FMLexer lexer(L"_ident@");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_NE(TOKreserver, token.m_type);
     token = lexer.NextToken();
     EXPECT_EQ(TOKreserver, token.m_type);
@@ -285,12 +285,12 @@
 TEST(CXFA_FMLexerTest, Whitespace) {
   {
     CXFA_FMLexer lexer(L" \t\xc\x9\xb");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(TOKeof, token.m_type);
   }
   {
     CXFA_FMLexer lexer(L"123 \t\xc\x9\xb 456");
-    CXFA_FMToken token = lexer.NextToken();
+    CXFA_FMLexer::Token token = lexer.NextToken();
     EXPECT_EQ(TOKnumber, token.m_type);
     EXPECT_EQ(L"123", token.m_string);
 
@@ -306,7 +306,7 @@
 
 TEST(CXFA_FMLexerTest, NullData) {
   CXFA_FMLexer lexer(WideStringView(L"\x2d\x32\x00\x2d\x32", 5));
-  CXFA_FMToken token = lexer.NextToken();
+  CXFA_FMLexer::Token token = lexer.NextToken();
   EXPECT_EQ(TOKminus, token.m_type);
 
   token = lexer.NextToken();
diff --git a/xfa/fxfa/fm2js/cxfa_fmparser.h b/xfa/fxfa/fm2js/cxfa_fmparser.h
index 0e61abb..eb3da64 100644
--- a/xfa/fxfa/fm2js/cxfa_fmparser.h
+++ b/xfa/fxfa/fm2js/cxfa_fmparser.h
@@ -66,7 +66,7 @@
 
   UnownedPtr<cppgc::Heap> const m_heap;
   UnownedPtr<CXFA_FMLexer> m_lexer;
-  CXFA_FMToken m_token;
+  CXFA_FMLexer::Token m_token;
   bool m_error = false;
   unsigned long m_parse_depth = 0;
   unsigned long m_max_parse_depth;
