code: public List<String> getBeanNames(Class<?> type) {
      if (typeNames.containsKey(type)) { return typeNames.get(type); }
      List<String> names = CollectUtils.newArrayList();
      for (Map.Entry<String, Class<?>> entry : nameTypes.entrySet()) {
        if (type.isAssignableFrom(entry.getValue())) {
          names.add(entry.getKey());
        }
      }
      typeNames.put(type, names);
      return names;
    }
docs: Get bean name list according given type