private static @Nullable GetDataRule getDataRuleInner(@NotNull String dataId, @NotNull GetDataRuleType ruleType) {
    String uninjectedId = InjectedDataKeys.uninjectedId(dataId);
    GetDataRule slowRule = ruleType == GetDataRuleType.PROVIDER &&
                           !PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId) ?
                           dataProvider -> getSlowData(dataId, dataProvider) : null;
    List<GetDataRule> rules1 = rulesForKey(dataId, ruleType);
    List<GetDataRule> rules2 = uninjectedId == null ? null : rulesForKey(uninjectedId, ruleType);
    if (rules1 == null && rules2 == null) return slowRule;
    return dataProvider -> {
      Object data = slowRule == null ? null : slowRule.getData(dataProvider);
      data = data != null ? data : rules1 == null ? null : getRulesData(dataId, rules1, dataProvider);
      data = data != null ? data : rules2 == null ? null : getRulesData(dataId, rules2, id -> {
        String injectedId = InjectedDataKeys.injectedId(id);
        return injectedId != null ? dataProvider.getData(injectedId) : null;
      });
      return data;
    };
  }
private static @Nullable GetDataRule getDataRuleInner(@NotNull String dataId, @NotNull GetDataRuleType ruleType)