docs: @SuppressWarnings( { "unchecked" })
      public Class<Object> getCaller() {
          Class<Object> aClass = null;
  
          // Walk the stack backwards to find the calling class: don't
          // want to use Class.forName, because we want the class as loaded
          // by it's original classloader
          Class<Object> stack[] = (Class<Object>[]) this.getClassContext();
          for (Class<Object> bClass : stack) {
              // Find the first class in the stack that _isn't_ Tr or StackFinder,
              // etc. Use the name rather than the class instance (to also work across
              // classloaders, should that happen)
              String name = bClass.getName();
              if (!name.endsWith("ras.Tr") && // ejs or websphere
                  !name.endsWith("ras.TraceNLS") &&
                  !name.endsWith("internal.StackFinder") &&
                  !name.endsWith("internal.TraceNLSResolver") &&
                  !name.endsWith("internal.WsLogger")) {
                  aClass = bClass;
                  break;
              }
          }
  
          return aClass;
      }