code: public String getPropertyValue(String[] propertyNames, String... parameters) {
          // Create possible combinations of property names
          String value;
          List<String> possiblePropertyNames = new ArrayList<String>();
          StringBuffer fullName = new StringBuffer();
          for (int i = 0; i < propertyNames.length; i++) {
              fullName.append(propertyNames[propertyNames.length - i - 1]);
              possiblePropertyNames.add(fullName.toString());
          }
  
          // Try to find the property
          for (int i = 0; i < possiblePropertyNames.size(); i++) {
              String propertyNameCurrent = possiblePropertyNames.get(possiblePropertyNames.size() - i
                      - 1);
  
              for (int y = 0; y < propertyFiles.size(); y++) {
                  try {
                      GUIProperties propertyFile = propertyFiles.get(y);
                      if (parameters != null && parameters.length > 0) {
                          value = propertyFile.getPropertyValue(propertyNameCurrent, parameters);
                      } else {
                          value = propertyFile.getPropertyValue(propertyNameCurrent);
                      }
                      return value;
                  } catch (MissingResourceException e) {
                      // Ignore and continue searching
                  }
              }
          }
  
          throw new MissingGUIPropertyException(possiblePropertyNames, propertyFilesNames);
      }
docs: Searches over the group of {@code GUIProperties} for a property
  corresponding to a hierarchical concatenation of the given names.
  <p>
  Concatenation of property names is done from high index to low. That is
  to say, for the array {@code ["a", "b", "c"]}, the names searched will be
  {@code "cba"}, {@code "cb"}, {@code "c"} in that order.
  
  @param propertyNames
  names to be concatenated and searched for
  @param parameters
  instances of the {@code String} literal <code>"{n}"</code> in
  the retrieved value will be replaced by {@code params[n]}
  @return the first property found associated with a concatenation of the
  given names
  @throws MissingGUIPropertyException