code: public static String[] splitUnescape(String input, char[] separators, char echar, char[] special) {
          List<String> components = new ArrayList<>();
          boolean done = false;
          String remaining = input;
          while (!done) {
              Partial result = unescape(remaining, echar, special, separators);
              if (result.getUnescaped() != null) {
                  components.add(result.unescaped);
              }
              if (result.getRemaining() != null) {
                  remaining = result.getRemaining();
              } else {
                  done = true;
              }
          }
          return components.toArray(new String[components.size()]);
  
      }
docs: Split the input on the given separator char, and unescape each portion using the escape char and special chars
  
  @param input      input string with components separated by the the separator chars
  @param separators chars separating each component
  @param echar      escape char
  @param special    additional chars that are escaped, does not need to include echar or separators
  
  @return the unescaped components of the input