code: public static String repeat(final String str, final String separator, final int repeat) {
          if(str == null || separator == null) {
              return repeat(str, repeat);
          }
          // given that repeat(String, int) is quite optimized, better to rely on it than try and splice this into it
          final String result = repeat(str + separator, repeat);
          return removeEnd(result, separator);
      }
docs: <p>Repeat a String {@code repeat} times to form a
  new String, with a String separator injected each time. </p>
  
  <pre>
  StringUtils.repeat(null, null, 2) = null
  StringUtils.repeat(null, "x", 2)  = null
  StringUtils.repeat("", null, 0)   = ""
  StringUtils.repeat("", "", 2)     = ""
  StringUtils.repeat("", "x", 3)    = "xxx"
  StringUtils.repeat("?", ", ", 3)  = "?, ?, ?"
  </pre>
  
  @param str        the String to repeat, may be null
  @param separator  the String to inject, may be null
  @param repeat     number of times to repeat str, negative treated as zero
  @return a new String consisting of the original String repeated,
  {@code null} if null String input
  @since 2.5