diff --git a/JavaToCSharp.Tests/ConcurrencyTests.cs b/JavaToCSharp.Tests/ConcurrencyTests.cs
new file mode 100644
index 0000000..bc2beef
--- /dev/null
+++ b/JavaToCSharp.Tests/ConcurrencyTests.cs
@@ -0,0 +1,82 @@
+using JavaToCSharp;
+
+namespace JavaToCSharp.Tests;
+
+///
+/// Regression tests for shared mutable state that previously corrupted conversions
+/// when they ran concurrently. See the voidvoid return-type corruption caused by
+/// holding its parse state in static fields.
+///
+public class ConcurrencyTests
+{
+ ///
+ /// Hammers the type-name parser from many threads at once. Before the fix, the parser's
+ /// shared static StringBuilder caused threads to splice each other's output, producing
+ /// results like "voidvoid" or another thread's type name entirely.
+ ///
+ [Fact]
+ public void ConvertType_IsThreadSafe()
+ {
+ (string Java, string Expected)[] cases =
+ [
+ ("void", "void"),
+ ("String", "string"),
+ ("Integer", "int"),
+ ("List", "IList"),
+ ("Map", "Dictionary"),
+ ("int[]", "int[]"),
+ ("List