### Question:
WikiDataSystem extends SimpleSystemImpl { public static Optional<EntityIdValue> createEntityIdValue(String id) { if (!id.matches("^[QP][0-9]+$")) { return Optional.empty(); } try { Constructor<? extends EntityIdValue> constructor; Class<? extends EntityIdValue> clazz=ItemIdValueImpl.class; if (id.startsWith("P")) { clazz=PropertyIdValueImpl.class; }; constructor=clazz.getDeclaredConstructor(String.class,String.class); constructor.setAccessible(true); EntityIdValue idValue = constructor.newInstance(id, siteiri); return Optional.of(idValue); } catch (Throwable th) { throw new RuntimeException(th); } } WikiDataSystem();  WikiDataSystem(String... languageCodes); private  WikiDataSystem(WikibaseDataFetcher wbdf, String... languageCodes); @Override SimpleNode moveTo(String entityId, String... keys); @Override SimpleSystem connect(String... connectionParams); void addLanguage(String languageCode); List<String> getLanguages(); Cache useCache(File cacheFile, String purpose); SimpleNode cache(EntityIdValue entityId, boolean optional); static Optional<EntityIdValue> createEntityIdValue(String id); Optional<SimpleNode> cache(String id, boolean optional); @Override Class<? extends SimpleNode> getNodeClass(); static final String PURPOSE_PROPERTY; static final String PURPOSE_ITEM; static String siteiri; }### Answer:
@Test public void testCreateEntityIdValue() { Optional<EntityIdValue> optIdValue = WikiDataSystem.createEntityIdValue("P20"); assertTrue(optIdValue.isPresent()); EntityIdValue idValue = optIdValue.get(); assertEquals("P20", idValue.getId()); if (debug) System.out.println(idValue.getIri()); }