test_class.declarator: rule = new JenkinsRule()
test_class.modifier: @Rule
      public
test_class.original_string: @Rule
      public JenkinsRule rule = new JenkinsRule();
test_class.type: JenkinsRule
test_class.var_name: rule
test_class.declarator: errors = new ErrorCollector()
test_class.modifier: @Rule public
test_class.original_string: @Rule public ErrorCollector errors = new ErrorCollector();
test_class.type: ErrorCollector
test_class.var_name: errors
test_class.declarator: lookup
test_class.modifier: @Inject
test_class.original_string: @Inject
      SymbolLookup lookup;
test_class.type: SymbolLookup
test_class.var_name: lookup
test_class.declarator: foo
test_class.modifier: @Inject
test_class.original_string: @Inject
      Foo foo;
test_class.type: Foo
test_class.var_name: foo
test_class.declarator: bar
test_class.modifier: @Inject
test_class.original_string: @Inject
      Bar bar;
test_class.type: Bar
test_class.var_name: bar
test_class.declarator: fishingNetDescriptor
test_class.modifier: @Inject
test_class.original_string: @Inject
      FishingNet.DescriptorImpl fishingNetDescriptor;
test_class.type: FishingNet.DescriptorImpl
test_class.var_name: fishingNetDescriptor
test_class.declarator: internetDescriptor
test_class.modifier: @Inject
test_class.original_string: @Inject
      Internet.DescriptorImpl internetDescriptor;
test_class.type: Internet.DescriptorImpl
test_class.var_name: internetDescriptor
test_class.file: plugin/src/test/java/org/jenkinsci/plugins/structs/SymbolLookupTest.java
test_class.identifier: SymbolLookupTest
test_case.body: @Issue("JENKINS-37820")
      @Test
      public void descriptorIsDescribable() {
          assertEquals(Collections.singleton("whatever"), SymbolLookup.getSymbolValue(SomeConfiguration.class));
          assertEquals(Collections.singleton("whatever"), SymbolLookup.getSymbolValue(rule.jenkins.getDescriptorByType(SomeConfiguration.class)));
      }
test_case.class_method_signature: SymbolLookupTest.descriptorIsDescribable()
test_case.full_signature: @Issue("JENKINS-37820") @Test public void descriptorIsDescribable()
test_case.identifier: descriptorIsDescribable
test_case.invocations: assertEquals singleton getSymbolValue assertEquals singleton getSymbolValue getDescriptorByType
test_case.modifiers: @Issue("JENKINS-37820") @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void descriptorIsDescribable()
focal_class.declarator: cache = new ConcurrentHashMap<Key, Object>()
focal_class.modifier: private final
focal_class.original_string: private final ConcurrentMap<Key,Object> cache = new ConcurrentHashMap<Key, Object>();
focal_class.type: ConcurrentMap<Key,Object>
focal_class.var_name: cache
focal_class.declarator: noHitCache = new ConcurrentHashMap<Key, Object>()
focal_class.modifier: private final
focal_class.original_string: private final ConcurrentMap<Key,Object> noHitCache = new ConcurrentHashMap<Key, Object>();
focal_class.type: ConcurrentMap<Key,Object>
focal_class.var_name: noHitCache
focal_class.declarator: NO_HIT = new Object()
focal_class.modifier: static final
focal_class.original_string: static final Object NO_HIT = new Object();
focal_class.type: Object
focal_class.var_name: NO_HIT
focal_class.declarator: pluginManager
focal_class.modifier: @Inject
focal_class.original_string: @Inject
      PluginManager pluginManager;
focal_class.type: PluginManager
focal_class.var_name: pluginManager
focal_class.declarator: jenkins
focal_class.modifier: @Inject
focal_class.original_string: @Inject
      Jenkins jenkins;
focal_class.type: Jenkins
focal_class.var_name: jenkins
focal_class.declarator: pluginNames = Collections.EMPTY_SET
focal_class.original_string: Set<String> pluginNames = Collections.EMPTY_SET;
focal_class.type: Set<String>
focal_class.var_name: pluginNames
focal_class.declarator: LOGGER = Logger.getLogger(SymbolLookup.class.getName())
focal_class.modifier: private static final
focal_class.original_string: private static final Logger LOGGER = Logger.getLogger(SymbolLookup.class.getName());
focal_class.type: Logger
focal_class.var_name: LOGGER
focal_class.file: plugin/src/main/java/org/jenkinsci/plugins/structs/SymbolLookup.java
focal_class.identifier: SymbolLookup
focal_class.class_method_signature: SymbolLookup.pluginsToNames(List<PluginWrapper> plugins)
focal_class.full_signature: private static HashSet<String> pluginsToNames(List<PluginWrapper> plugins)
focal_class.identifier: pluginsToNames
focal_class.modifiers: private static
focal_class.parameters: (List<PluginWrapper> plugins)
focal_class.return: HashSet<String>
focal_class.signature: HashSet<String> pluginsToNames(List<PluginWrapper> plugins)
focal_class.class_method_signature: SymbolLookup.checkPluginsForChangeAndRefresh()
focal_class.full_signature: private synchronized void checkPluginsForChangeAndRefresh()
focal_class.identifier: checkPluginsForChangeAndRefresh
focal_class.modifiers: private synchronized
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void checkPluginsForChangeAndRefresh()
focal_class.class_method_signature: SymbolLookup.find(Class<T> type, String symbol)
focal_class.full_signature: public T find(Class<T> type, String symbol)
focal_class.identifier: find
focal_class.modifiers: public
focal_class.parameters: (Class<T> type, String symbol)
focal_class.return: T
focal_class.signature: T find(Class<T> type, String symbol)
focal_class.class_method_signature: SymbolLookup.findDescriptor(Class<?> type, String symbol)
focal_class.full_signature: public Descriptor<?> findDescriptor(Class<?> type, String symbol)
focal_class.identifier: findDescriptor
focal_class.modifiers: public
focal_class.parameters: (Class<?> type, String symbol)
focal_class.return: Descriptor<?>
focal_class.signature: Descriptor<?> findDescriptor(Class<?> type, String symbol)
focal_class.class_method_signature: SymbolLookup.get()
focal_class.full_signature: public static SymbolLookup get()
focal_class.identifier: get
focal_class.modifiers: public static
focal_class.parameters: ()
focal_class.return: SymbolLookup
focal_class.signature: SymbolLookup get()
focal_class.class_method_signature: SymbolLookup.getSymbolValue(@Nonnull Object o)
focal_class.full_signature: @Nonnull public static Set<String> getSymbolValue(@Nonnull Object o)
focal_class.identifier: getSymbolValue
focal_class.modifiers: @Nonnull public static
focal_class.parameters: (@Nonnull Object o)
focal_class.return: Set<String>
focal_class.signature: Set<String> getSymbolValue(@Nonnull Object o)
focal_class.class_method_signature: SymbolLookup.getSymbolValue(@Nonnull Class<?> c)
focal_class.full_signature: @SuppressFBWarnings(value = "NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE", justification = "Jenkins.getInstance() can return null in theory.") @Nonnull public static Set<String> getSymbolValue(@Nonnull Class<?> c)
focal_class.identifier: getSymbolValue
focal_class.modifiers: @SuppressFBWarnings(value = "NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE", justification = "Jenkins.getInstance() can return null in theory.") @Nonnull public static
focal_class.parameters: (@Nonnull Class<?> c)
focal_class.return: Set<String>
focal_class.signature: Set<String> getSymbolValue(@Nonnull Class<?> c)
focal_method.body: @Nonnull public static Set<String> getSymbolValue(@Nonnull Object o) {
          if (o instanceof Describable) {
              return getSymbolValue(((Describable) o).getDescriptor().getClass());
          } else {
              return getSymbolValue(o.getClass());
          }
      }
focal_method.class_method_signature: SymbolLookup.getSymbolValue(@Nonnull Object o)
focal_method.full_signature: @Nonnull public static Set<String> getSymbolValue(@Nonnull Object o)
focal_method.identifier: getSymbolValue
focal_method.invocations: getSymbolValue getClass getDescriptor getSymbolValue getClass
focal_method.modifiers: @Nonnull public static
focal_method.parameters: (@Nonnull Object o)
focal_method.return: Set<String>
focal_method.signature: Set<String> getSymbolValue(@Nonnull Object o)