code: @SuppressWarnings("deprecation")
  	public static Class<?> getCallerClass() {
  		//0 = sun.reflect.Reflection.getCallerClass
  		//1 = this method's frame
  		//2 = caller of 'getCallerClass' = asAccesibleMethod
  		//3 = caller of 'asAccesibleMethod' = jlrInvoke
  		//4 = caller we are interested in...
  
  		// In jdk17u25 there is an extra frame inserted:
  		// "This also fixes a regression introduced in 7u25 in which
  		// getCallerClass(int) is now a Java method that adds an additional frame
  		// that wasn't taken into account." in https://permalink.gmane.org/gmane.comp.java.openjdk.jdk7u.devel/6573
  		Class<?> caller = sun.reflect.Reflection.getCallerClass(depth);
  		if (caller == ReflectiveInterceptor.class) {
  			// If this is true we have that extra frame on the stack
  			depth = 5;
  			caller = sun.reflect.Reflection.getCallerClass(depth);
  		}
  
  		String callerClassName = caller.getName();
  
  		Matcher matcher = Constants.executorClassNamePattern.matcher(callerClassName);
  		if (matcher.find()) {
  			// Complication... the caller may in fact be an executor method...
  			// in this case the caller will be an executor class.
  
  			ClassLoader loader = caller.getClassLoader();
  			try {
  				return Class.forName(callerClassName.substring(0, matcher.start()), false, loader);
  			}
  			catch (ClassNotFoundException e) {
  				//Supposedly it wasn't an executor class after all...
  				log.log(Level.INFO, "Potential trouble determining caller of reflective method", e);
  			}
  		}
  		return caller;
  	}
docs: /*
  Get the Class that declares the method calling interceptor method that called this method.