String (String s, @NotNull String ideaHomePath) { if (s == null) return null; if (s.startsWith("..")) { s = ideaHomePath + '/' + BIN_DIRECTORY + '/' + s; } Matcher m = Lazy.PROPERTY_REF.matcher(s); while (m.find()) { String key = m.group(1); String value = System.getProperty(key); if (value == null) { switch (key) { case PROPERTY_HOME_PATH: case PROPERTY_HOME: value = ideaHomePath; break; case PROPERTY_CONFIG_PATH: value = getConfigPath(); break; case PROPERTY_SYSTEM_PATH: value = getSystemPath(); break; } } if (value == null) { log("Unknown property: " + key); value = ""; } s = s.replace(m.group(), value); m = Lazy.PROPERTY_REF.matcher(s); } return s; }