Fix bug with trailing semis after statement-level type declarations

The formatter guesses that semis exist after all type declarations to deal with
extra tokens at the top level or inside type declarations. Empty statements are
preserved, and always result in a token.

If a statement-level type declaration is followed by an empty statement, the
formatter guesses the semi after the type declaration, and then emits it again
when processing the statement.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=108383407
diff --git a/core/src/main/java/com/google/googlejavaformat/java/JavaInputAstVisitor.java b/core/src/main/java/com/google/googlejavaformat/java/JavaInputAstVisitor.java
index 9464772..9cfd81c 100644
--- a/core/src/main/java/com/google/googlejavaformat/java/JavaInputAstVisitor.java
+++ b/core/src/main/java/com/google/googlejavaformat/java/JavaInputAstVisitor.java
@@ -818,7 +818,7 @@
   @Override
   public boolean visit(EmptyStatement node) {
     sync(node);
-    token(";");
+    builder.guessToken(";");
     return false;
   }
 
diff --git a/core/src/test/resources/com/google/googlejavaformat/java/testdata/B25811323.input b/core/src/test/resources/com/google/googlejavaformat/java/testdata/B25811323.input
new file mode 100644
index 0000000..291e34c
--- /dev/null
+++ b/core/src/test/resources/com/google/googlejavaformat/java/testdata/B25811323.input
@@ -0,0 +1,5 @@
+class B25811323 {
+  void f() {
+    class Inner {};
+  }
+}
diff --git a/core/src/test/resources/com/google/googlejavaformat/java/testdata/B25811323.output b/core/src/test/resources/com/google/googlejavaformat/java/testdata/B25811323.output
new file mode 100644
index 0000000..291e34c
--- /dev/null
+++ b/core/src/test/resources/com/google/googlejavaformat/java/testdata/B25811323.output
@@ -0,0 +1,5 @@
+class B25811323 {
+  void f() {
+    class Inner {};
+  }
+}