private void generateFallbackKeys(String key,ArrayList<String> fallbackKeys){
  int p1=key.indexOf("[$");
  if (p1 == -1) {
    fallbackKeys.add(key);
  }
 else {
    int p2=key.indexOf(']',p1 + 2);
    if (p2 == -1) {
      return;
    }
    String modifierKey=key.substring(p1 + 2,p2);
    String[] modifierValues=propertyNameModifiers.get(modifierKey);
    if (modifierValues == null) {
      modifierValues=new String[]{"default"};
    }
    for (    String mv : modifierValues) {
      generateFallbackKeys(key.substring(0,p1) + mv + key.substring(p2 + 1),fallbackKeys);
    }
  }
}

private void generateFallbackKeys ( String key , ArrayList < String > fallbackKeys ) { int p1 = key . indexOf ( "[$" ) ; if ( p1 == - 1 ) { fallbackKeys . add ( key ) ; } else { int p2 = key . indexOf ( ']' , p1 + 2 ) ; if ( p2 == - 1 ) { return ; } String modifierKey = key . substring ( p1 + 2 , p2 ) ; String [ ] modifierValues = propertyNameModifiers . get ( modifierKey ) ; if ( modifierValues == null ) { modifierValues = new String [ ] { "default" } ; } for ( String mv : modifierValues ) { generateFallbackKeys ( key . substring ( 0 , p1 ) + mv + key . substring ( p2 + 1 ) , fallbackKeys ) ; } } }
generates fallback keys by processing all property name modifiers in the key .
