code: public String resolveMacros(String input) {
  
          String result = input;
  
          if (input != null) {
              String lastResult;
              do {
                  // save result for next comparison
                  lastResult = result;
                  // resolve the macros
                  result = CmsMacroResolver.resolveMacros(result, this);
                  // if nothing changes then the final result is found
              } while (!result.equals(lastResult));
          }
  
          // return the result
          return result;
      }
docs: Resolves the macros in the given input.<p>
  
  Calls <code>{@link #resolveMacros(String)}</code> until no more macros can
  be resolved in the input. This way "nested" macros in the input are resolved as well.<p>
  
  @see org.opencms.util.I_CmsMacroResolver#resolveMacros(java.lang.String)