From 34e5942bf0e7981226d5c280d85ee4ab17a17503 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Mon, 8 Jun 2020 12:22:40 -0400
Subject: [PATCH] Fix timings task name generation for extreme cases - Fixes
 #3499

I'm going make a class, and in that class i'm going to
make a method. And in that method, I'm going to make a local class.

And then in that local class, I'm going to make another inner class.

I heard you like complex class trees.
---
 Spigot-Server-Patches/0009-Timings-v2.patch | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/Spigot-Server-Patches/0009-Timings-v2.patch b/Spigot-Server-Patches/0009-Timings-v2.patch
index dd12ff299c..3e06a6ec27 100644
--- a/Spigot-Server-Patches/0009-Timings-v2.patch
+++ b/Spigot-Server-Patches/0009-Timings-v2.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Timings v2
 
 diff --git a/src/main/java/co/aikar/timings/MinecraftTimings.java b/src/main/java/co/aikar/timings/MinecraftTimings.java
 new file mode 100644
-index 0000000000000000000000000000000000000000..33342139a042ebec5fb4e8566028f8f7e3149937
+index 0000000000000000000000000000000000000000..11c5f8e033689f483a64486d2f8c206ca26ff9da
 --- /dev/null
 +++ b/src/main/java/co/aikar/timings/MinecraftTimings.java
 @@ -0,0 +1,145 @@
@@ -81,13 +81,13 @@ index 0000000000000000000000000000000000000000..33342139a042ebec5fb4e8566028f8f7
 +
 +        final String taskname = taskNameCache.computeIfAbsent(taskClass, clazz -> {
 +            try {
-+                String clsName = clazz.isAnonymousClass() || clazz.isLocalClass()
++                String clsName = !clazz.isMemberClass()
 +                    ? clazz.getName()
 +                    : clazz.getCanonicalName();
-+                if (clsName.contains("$Lambda$")) {
++                if (clsName != null && clsName.contains("$Lambda$")) {
 +                    clsName = clsName.replaceAll("(Lambda\\$.*?)/.*", "$1");
 +                }
-+                return clsName;
++                return clsName != null ? clsName : "UnknownTask";
 +            } catch (Throwable ex) {
 +                new Exception("Error occurred detecting class name", ex).printStackTrace();
 +                return "MangledClassFile";