### Question:
AbstractConfig implements Serializable { protected static void checkMultiExtension(Class<?> type, String property, String value) { checkMultiName(property, value); if (StringUtils.isNotEmpty(value)) { 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()); } } } }  @Parameter(excluded = true) String getId(); void setId(String id); void updateIdIfAbsent(String value); Map<String, String> getMetaData(); @Parameter(excluded = true) String getPrefix(); void setPrefix(String prefix); void refresh(); @Override String toString(); @Parameter(excluded = true) boolean isValid();  }### Answer:
@Test public void checkMultiExtension1() throws Exception { Assertions.assertThrows(IllegalStateException.class, () -> AbstractConfig.checkMultiExtension(Greeting.class, "hello", "default,world")); }
@Test public void checkMultiExtension2() throws Exception { Assertions.assertThrows(IllegalStateException.class, () -> AbstractConfig.checkMultiExtension(Greeting.class, "hello", "default,-world")); }