### Question:
Configuration implements Serializable, Cloneable { public String getKey() { if (getLang().equals("ja") && getVariant().equals("zenkaku")) return "ja"; return getLang() + (isEmpty(getVariant()) ? "" : "." + getVariant()); } Configuration(File base, SymbolTable symbolTable, List<ValidatorConfiguration> validatorConfigs, String lang, boolean secure); static List<String> getDefaultConfigKeys(); SymbolTable getSymbolTable(); List<ValidatorConfiguration> getValidatorConfigs(); String getLang(); String getVariant(); RedPenTokenizer getTokenizer(); String getKey(); File getHome(); File getBase(); File findFile(String relativePath); boolean isSecure(); @Override Configuration clone(); @Override boolean equals(Object o); @Override int hashCode(); @Override String toString(); static ConfigurationBuilder builder(); static ConfigurationBuilder builder(String key);  }### Answer:
@Test void keyIsLangAndType() throws Exception { SymbolTable symbolTable = new SymbolTable("ja", Optional.of("hankaku"), emptyList()); assertEquals("ja.hankaku", new Configuration(new File(""), symbolTable, emptyList(), "ja", false).getKey()); }
@Test void keyIsLangOnlyIfTypeIsMissing() throws Exception { SymbolTable symbolTable = new SymbolTable("en", Optional.empty(), emptyList()); assertEquals("en", new Configuration(new File(""), symbolTable, emptyList(), "en", false).getKey()); }
@Test void keyIsLangOnlyForZenkaku() throws Exception { SymbolTable symbolTable = new SymbolTable("ja", Optional.of("zenkaku"), emptyList()); assertEquals("ja", new Configuration(new File(""), symbolTable, emptyList(), "ja", false).getKey()); }