test_class.file: agent/core/src/test/java/org/glowroot/agent/weaving/BeansTest.java
test_class.identifier: BeansTest
test_case.body: @Test
      public void shouldGetList() throws Exception {
          @SuppressWarnings("unchecked")
          List<String> value = (List<String>) Beans.value(new SomeObject(), ImmutableList.of("five"));
          assertThat(value).containsExactly("a", "x", "z");
      }
test_case.class_method_signature: BeansTest.shouldGetList()
test_case.full_signature: @Test public void shouldGetList()
test_case.identifier: shouldGetList
test_case.invocations: value of containsExactly assertThat
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void shouldGetList()
focal_class.declarator: logger = LoggerFactory.getLogger(Beans.class)
focal_class.modifier: private static final
focal_class.original_string: private static final Logger logger = LoggerFactory.getLogger(Beans.class);
focal_class.type: Logger
focal_class.var_name: logger
focal_class.declarator: SENTINEL_ACCESSOR
focal_class.modifier: private static final
focal_class.original_string: private static final Accessor SENTINEL_ACCESSOR;
focal_class.type: Accessor
focal_class.var_name: SENTINEL_ACCESSOR
focal_class.declarator: getters =
              CacheBuilder.newBuilder()
                      .weakKeys()
                      .build(new CacheLoader<Class<?>, ConcurrentMap<String, Accessor>>() {
                          @Override
                          public ConcurrentMap<String, Accessor> load(Class<?> clazz) {
                              // weak values since Method has a strong reference to its Class which
                              // is used as the key in the outer loading cache
                              return new MapMaker().weakValues().makeMap();
                          }
                      })
focal_class.modifier: private static final
focal_class.original_string: private static final LoadingCache<Class<?>, ConcurrentMap<String, Accessor>> getters =
              CacheBuilder.newBuilder()
                      .weakKeys()
                      .build(new CacheLoader<Class<?>, ConcurrentMap<String, Accessor>>() {
                          @Override
                          public ConcurrentMap<String, Accessor> load(Class<?> clazz) {
                              // weak values since Method has a strong reference to its Class which
                              // is used as the key in the outer loading cache
                              return new MapMaker().weakValues().makeMap();
                          }
                      });
focal_class.type: LoadingCache<Class<?>, ConcurrentMap<String, Accessor>>
focal_class.var_name: getters
focal_class.file: agent/core/src/main/java/org/glowroot/agent/weaving/Beans.java
focal_class.identifier: Beans
focal_class.class_method_signature: Beans.Beans()
focal_class.full_signature: private  Beans()
focal_class.identifier: Beans
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.signature:  Beans()
focal_class.class_method_signature: Beans.value(@Nullable Object obj, List<String> path)
focal_class.full_signature: public static @Nullable Object value(@Nullable Object obj, List<String> path)
focal_class.identifier: value
focal_class.modifiers: public static @Nullable
focal_class.parameters: (@Nullable Object obj, List<String> path)
focal_class.return: Object
focal_class.signature: Object value(@Nullable Object obj, List<String> path)
focal_class.class_method_signature: Beans.value(@Nullable Object obj, List<String> path, int currIndex)
focal_class.full_signature: private static @Nullable Object value(@Nullable Object obj, List<String> path, int currIndex)
focal_class.identifier: value
focal_class.modifiers: private static @Nullable
focal_class.parameters: (@Nullable Object obj, List<String> path, int currIndex)
focal_class.return: Object
focal_class.signature: Object value(@Nullable Object obj, List<String> path, int currIndex)
focal_class.class_method_signature: Beans.getAccessor(Class<?> clazz, String name)
focal_class.full_signature: private static Accessor getAccessor(Class<?> clazz, String name)
focal_class.identifier: getAccessor
focal_class.modifiers: private static
focal_class.parameters: (Class<?> clazz, String name)
focal_class.return: Accessor
focal_class.signature: Accessor getAccessor(Class<?> clazz, String name)
focal_class.class_method_signature: Beans.loadPossiblyArrayBasedAccessor(Class<?> clazz, String name)
focal_class.full_signature: static @Nullable Accessor loadPossiblyArrayBasedAccessor(Class<?> clazz, String name)
focal_class.identifier: loadPossiblyArrayBasedAccessor
focal_class.modifiers: static @Nullable
focal_class.parameters: (Class<?> clazz, String name)
focal_class.return: Accessor
focal_class.signature: Accessor loadPossiblyArrayBasedAccessor(Class<?> clazz, String name)
focal_class.class_method_signature: Beans.loadAccessor(Class<?> clazz, String name)
focal_class.full_signature: private static @Nullable Accessor loadAccessor(Class<?> clazz, String name)
focal_class.identifier: loadAccessor
focal_class.modifiers: private static @Nullable
focal_class.parameters: (Class<?> clazz, String name)
focal_class.return: Accessor
focal_class.signature: Accessor loadAccessor(Class<?> clazz, String name)
focal_class.class_method_signature: Beans.sentinelMethod()
focal_class.full_signature: @SuppressWarnings("unused") private static void sentinelMethod()
focal_class.identifier: sentinelMethod
focal_class.modifiers: @SuppressWarnings("unused") private static
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void sentinelMethod()
focal_method.body: public static @Nullable Object value(@Nullable Object obj, List<String> path) throws Exception {
          return value(obj, path, 0);
      }
focal_method.class_method_signature: Beans.value(@Nullable Object obj, List<String> path)
focal_method.full_signature: public static @Nullable Object value(@Nullable Object obj, List<String> path)
focal_method.identifier: value
focal_method.invocations: value
focal_method.modifiers: public static @Nullable
focal_method.parameters: (@Nullable Object obj, List<String> path)
focal_method.return: Object
focal_method.signature: Object value(@Nullable Object obj, List<String> path)