@Test
    public void multiConflictMatchTest() {
        ConditionData conditionData = new ConditionData();
        conditionData.setParamType(ParamTypeEnum.URI.getName());
        conditionData.setOperator(OperatorEnum.MATCH.getAlias());
        conditionData.setParamName("/");
        conditionData.setParamValue("/a/b/c/**");
        RuleData ruleData = RuleData.builder()
                .id("1")
                .pluginName("test")
                .selectorId("2")
                .name("test-plugin-rule")
                .enabled(true)
                .sort(1)
                .conditionDataList(Collections.singletonList(conditionData))
                .build();
        
        shenyuAntPathTrie.putNode("/aa/bb/*/a", ruleData, TrieCacheTypeEnum.RULE);
        shenyuAntPathTrie.putNode("/aa/bb/*/b", ruleData, TrieCacheTypeEnum.RULE);
        shenyuAntPathTrie.putNode("/aa/bb/*/c", ruleData, TrieCacheTypeEnum.RULE);
        shenyuAntPathTrie.putNode("/aa/bb/*/*/i", ruleData, TrieCacheTypeEnum.RULE);
        shenyuAntPathTrie.putNode("/aa/bb/**/m/c", ruleData, TrieCacheTypeEnum.RULE);
        shenyuAntPathTrie.putNode("/aa/bb/**/n/b", ruleData, TrieCacheTypeEnum.RULE);
        shenyuAntPathTrie.putNode("/aa/bb/{path}/x/a", ruleData, TrieCacheTypeEnum.RULE);
        shenyuAntPathTrie.putNode("/aa/bb/{path}/y/b", ruleData, TrieCacheTypeEnum.RULE);
        shenyuAntPathTrie.putNode("/http/a/{a}/{b}/m", ruleData, TrieCacheTypeEnum.RULE);
        shenyuAntPathTrie.putNode("/http/a/{c}/{d}/n", ruleData, TrieCacheTypeEnum.RULE);
        Assertions.assertEquals("/aa/bb/**/n/b", shenyuAntPathTrie.match("/aa/bb/dd/uu/n/b", "2").getFullPath());
    }
/*.json";

        ConditionData conditionData = new ConditionData();
        conditionData.setParamType(ParamTypeEnum.URI.getName());
        conditionData.setOperator(OperatorEnum.MATCH.getAlias());
        conditionData.setParamName("/");
        conditionData.setParamValue(uriPath);

        ConditionData conditionData1 = new ConditionData();
        conditionData1.setParamType(ParamTypeEnum.URI.getName());
        conditionData1.setOperator(OperatorEnum.MATCH.getAlias());
        conditionData1.setParamName("/");
        conditionData1.setParamValue(uriPath1);

        ConditionData conditionData2 = new ConditionData();
        conditionData2.setParamType(ParamTypeEnum.URI.getName());
        conditionData2.setOperator(OperatorEnum.MATCH.getAlias());
        conditionData2.setParamName("/");
        conditionData2.setParamValue(uriPath2);

        ConditionData conditionData3 = new ConditionData();
        conditionData3.setParamType(ParamTypeEnum.URI.getName());
        conditionData3.setOperator(OperatorEnum.MATCH.getAlias());
        conditionData3.setParamName("/");
        conditionData3.setParamValue(uriPath3);

        RuleData ruleData = RuleData.builder()
                .id("1")
                .pluginName("test")
                .selectorId("1")
                .name("test-plugin-rule")
                .enabled(true)
                .conditionDataList(Arrays.asList(conditionData, conditionData1, conditionData2, conditionData3))
                .build();
        shenyuAntPathTrie.putNode(Arrays.asList(uriPath, uriPath1, uriPath2, uriPath3), ruleData, TrieCacheTypeEnum.RULE);

        Assertions.assertEquals(shenyuAntPathTrie.match("/a/index.html", "1").getFullPath(), uriPath);
        Assertions.assertEquals(shenyuAntPathTrie.match("/a/b/Safe/b", "1").getFullPath(), uriPath1);
        Assertions.assertEquals(shenyuAntPathTrie.match("/a/b/shenyuSafe/b", "1").getFullPath(), uriPath1);
        Assertions.assertEquals(shenyuAntPathTrie.match("/a/b/shenyuSafeckj/b", "1").getFullPath(), uriPath1);
        Assertions.assertEquals(shenyuAntPathTrie.match("/a/c/Safe/bbb.jpg", "1").getFullPath(), uriPath2);
        Assertions.assertEquals(shenyuAntPathTrie.match("/aa/c/d/c/exx/data.json", "1").getFullPath(), uriPath3);
        Assertions.assertNull(shenyuAntPathTrie.match("/a/c/egh/klm", "1"));
    }
    
    @Test
    public void conflictMatchTest() {
        ConditionData conditionData = new ConditionData();
        conditionData.setParamType(ParamTypeEnum.URI.getName());
        conditionData.setOperator(OperatorEnum.MATCH.getAlias());
        conditionData.setParamName("/");
        conditionData.setParamValue("/a/b/c/**");
        RuleData ruleData = RuleData.builder()
                .id("1")
                .pluginName("test")
                .selectorId("2")
                .name("test-plugin-rule")
                .enabled(true)
                .sort(1)
                .conditionDataList(Collections.singletonList(conditionData))
                .build();
        
        RuleData ruleData2 = RuleData.builder()
                .id("2")
                .pluginName("test3")
                .selectorId("3")
                .name("test-plugin-rule")
                .enabled(true)
                .sort(1)
                .conditionDataList(Collections.singletonList(conditionData))
                .build();
        
        RuleData ruleData3 = RuleData.builder()
                .id("2")
                .pluginName("test3")
                .selectorId("43")
                .name("test-plugin-rule")
                .enabled(true)
                .sort(1)
                .conditionDataList(Collections.singletonList(conditionData))
                .build();
        
        shenyuAntPathTrie.putNode("/http/**", ruleData, TrieCacheTypeEnum.RULE);
        shenyuAntPathTrie.putNode("/http/client/hello", ruleData2, TrieCacheTypeEnum.RULE);
        shenyuAntPathTrie.putNode("/http/client/hell", ruleData2, TrieCacheTypeEnum.RULE);
        shenyuAntPathTrie.putNode("/http/{name}/hell", ruleData3, TrieCacheTypeEnum.RULE);
        shenyuAntPathTrie.putNode("/http/
shenyu-plugin/shenyu-plugin-base/src/test/java/org/apache/shenyu/plugin/base/trie/ShenyuRuleTrieTest.java