Intellij Idea's debugger renders object to string in object view (Preferences -> Build, Execution, Deployment -> Debugger -> Data Views -> Java -> Enable 'toString()' object view). This behavior is enabled by default and it leads some strange problem when debug in Dubbo, for examples: #2431, or user may observe a ReferenceConfig may init twice or ReferenceConfig#urls may have two same entries if the breakpoint happens to set in the relevant places. You may interested in looking into the details from http://t.cn/EAhta27, where @code4wt gives the excellent analysis.
throw new IllegalStateException("No such extension " + value + " for " + property + "/" + type.getName());
        }
    }
    protected static void checkMultiExtension(Class<?> type, String property, String value) {
        checkMultiName(property, value);
        if (value != null && value.length() > 0) {
            String[] values = value.split("\\s*[,]+\\s*");
            for (String v : values) {
                if (v.startsWith(Constants.REMOVE_VALUE_PREFIX)) {
                    v = v.substring(1);
                }
                if (Constants.DEFAULT_KEY.equals(v)) {
                    continue;
                }
                if (!ExtensionLoader.getExtensionLoader(type).hasExtension(v)) {
                    throw new IllegalStateException("No such extension " + v + " for " + property + "/" + type.getName());
                }
            }
        }
    }
    protected static void checkLength(String property, String value) {
        checkProperty(property, value, MAX_LENGTH, null);
    }
    protected static void checkPathLength(String property, String value) {
        checkProperty(property, value, MAX_PATH_LENGTH, null);
    }
    protected static void checkName(String property, String value) {
        checkProperty(property, value, MAX_LENGTH, PATTERN_NAME);
    }
    protected static void checkNameHasSymbol(String property, String value) {