test_class.file: agent/core/src/test/java/org/glowroot/agent/util/RateLimitedLoggerTest.java
test_class.identifier: RateLimitedLoggerTest
test_case.body: @Test
      public void testEmpty() {
          // given
          // when
          Object[] args = RateLimitedLogger.newArgsWithCountSinceLastWarning(new Object[] {}, 0);
          // then
          assertThat(args).containsExactly(0);
      }
test_case.class_method_signature: RateLimitedLoggerTest.testEmpty()
test_case.full_signature: @Test public void testEmpty()
test_case.identifier: testEmpty
test_case.invocations: newArgsWithCountSinceLastWarning containsExactly assertThat
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testEmpty()
focal_class.declarator: logger
focal_class.modifier: private final
focal_class.original_string: private final Logger logger;
focal_class.type: Logger
focal_class.var_name: logger
focal_class.declarator: warningRateLimiter = RateLimiter.create(1.0 / 60)
focal_class.modifier: private final
focal_class.original_string: private final RateLimiter warningRateLimiter = RateLimiter.create(1.0 / 60);
focal_class.type: RateLimiter
focal_class.var_name: warningRateLimiter
focal_class.declarator: countSinceLastWarning
focal_class.modifier: @GuardedBy("warningRateLimiter")
      private
focal_class.original_string: @GuardedBy("warningRateLimiter")
      private int countSinceLastWarning;
focal_class.type: int
focal_class.var_name: countSinceLastWarning
focal_class.file: agent/core/src/main/java/org/glowroot/agent/util/RateLimitedLogger.java
focal_class.identifier: RateLimitedLogger
focal_class.class_method_signature: RateLimitedLogger.RateLimitedLogger(Class<?> clazz)
focal_class.full_signature: public  RateLimitedLogger(Class<?> clazz)
focal_class.identifier: RateLimitedLogger
focal_class.modifiers: public
focal_class.parameters: (Class<?> clazz)
focal_class.signature:  RateLimitedLogger(Class<?> clazz)
focal_class.class_method_signature: RateLimitedLogger.warn(String format, /*@Nullable*/ Object... args)
focal_class.full_signature: public void warn(String format, /*@Nullable*/ Object... args)
focal_class.identifier: warn
focal_class.modifiers: public
focal_class.parameters: (String format, /*@Nullable*/ Object... args)
focal_class.return: void
focal_class.signature: void warn(String format, /*@Nullable*/ Object... args)
focal_class.class_method_signature: RateLimitedLogger.newArgsWithCountSinceLastWarning(/*@Nullable*/ Object[] args,
              int countSinceLastWarning)
focal_class.full_signature: @VisibleForTesting static @Nullable Object[] newArgsWithCountSinceLastWarning(/*@Nullable*/ Object[] args,
              int countSinceLastWarning)
focal_class.identifier: newArgsWithCountSinceLastWarning
focal_class.modifiers: @VisibleForTesting static @Nullable
focal_class.parameters: (/*@Nullable*/ Object[] args,
              int countSinceLastWarning)
focal_class.return: Object[]
focal_class.signature: Object[] newArgsWithCountSinceLastWarning(/*@Nullable*/ Object[] args,
              int countSinceLastWarning)
focal_method.body: @VisibleForTesting
      static @Nullable Object[] newArgsWithCountSinceLastWarning(/*@Nullable*/ Object[] args,
              int countSinceLastWarning) {
          if (args.length == 0) {
              return new Object[] {countSinceLastWarning};
          }
          @Nullable
          Object[] argsPlus = new Object[args.length + 1];
          if (args[args.length - 1] instanceof Throwable) {
              System.arraycopy(args, 0, argsPlus, 0, args.length - 1);
              argsPlus[args.length - 1] = countSinceLastWarning;
              argsPlus[args.length] = args[args.length - 1];
              return argsPlus;
          } else {
              System.arraycopy(args, 0, argsPlus, 0, args.length);
              argsPlus[args.length] = countSinceLastWarning;
              return argsPlus;
          }
      }
focal_method.class_method_signature: RateLimitedLogger.newArgsWithCountSinceLastWarning(/*@Nullable*/ Object[] args,
              int countSinceLastWarning)
focal_method.full_signature: @VisibleForTesting static @Nullable Object[] newArgsWithCountSinceLastWarning(/*@Nullable*/ Object[] args,
              int countSinceLastWarning)
focal_method.identifier: newArgsWithCountSinceLastWarning
focal_method.invocations: arraycopy arraycopy
focal_method.modifiers: @VisibleForTesting static @Nullable
focal_method.parameters: (/*@Nullable*/ Object[] args,
              int countSinceLastWarning)
focal_method.return: Object[]
focal_method.signature: Object[] newArgsWithCountSinceLastWarning(/*@Nullable*/ Object[] args,
              int countSinceLastWarning)