public static ArrayList<byte[]> getFilterArguments(byte[] filterStringAsByteArray) {
    int argumentListStartIndex = Bytes.searchDelimiterIndex(filterStringAsByteArray, 0,
      filterStringAsByteArray.length, ParseConstants.LPAREN);
    if (argumentListStartIndex == -1) {
      throw new IllegalArgumentException("Incorrect argument list");
    }

    int argumentStartIndex = 0;
    int argumentEndIndex = 0;
    ArrayList<byte[]> filterArguments = new ArrayList<>();

    for (int i = argumentListStartIndex + 1; i < filterStringAsByteArray.length; i++) {

      if (
        filterStringAsByteArray[i] == ParseConstants.WHITESPACE
          || filterStringAsByteArray[i] == ParseConstants.COMMA
          || filterStringAsByteArray[i] == ParseConstants.RPAREN
      ) {
        continue;
      }

      // The argument is in single quotes - for example 'prefix'
      if (filterStringAsByteArray[i] == ParseConstants.SINGLE_QUOTE) {
        argumentStartIndex = i;
        for (int j = argumentStartIndex + 1; j < filterStringAsByteArray.length; j++) {
          if (filterStringAsByteArray[j] == ParseConstants.SINGLE_QUOTE) {
            if (isQuoteUnescaped(filterStringAsByteArray, j)) {
              argumentEndIndex = j;
              i = j + 1;
              byte[] filterArgument = createUnescapdArgument(filterStringAsByteArray,
                argumentStartIndex, argumentEndIndex);
              filterArguments.add(filterArgument);
              break;
            } else {
              // To jump over the second escaped quote
              j++;
            }
          } else if (j == filterStringAsByteArray.length - 1) {
            throw new IllegalArgumentException("Incorrect argument list");
          }
        }
      } else {
        // The argument is an integer, boolean, comparison operator like <, >, != etc
        argumentStartIndex = i;
        for (int j = argumentStartIndex; j < filterStringAsByteArray.length; j++) {
          if (
            filterStringAsByteArray[j] == ParseConstants.WHITESPACE
              || filterStringAsByteArray[j] == ParseConstants.COMMA
              || filterStringAsByteArray[j] == ParseConstants.RPAREN
          ) {
            argumentEndIndex = j - 1;
            i = j;
            byte[] filterArgument = new byte[argumentEndIndex - argumentStartIndex + 1];
            Bytes.putBytes(filterArgument, 0, filterStringAsByteArray, argumentStartIndex,
              argumentEndIndex - argumentStartIndex + 1);
            filterArguments.add(filterArgument);
            break;
          } else if (j == filterStringAsByteArray.length - 1) {
            throw new IllegalArgumentException("Incorrect argument list");
          }
        }
      }
    }
    return filterArguments;
  }
Returns the arguments of the filter from the filter string
<p>
@param filterStringAsByteArray filter string given by the user
@return an ArrayList containing the arguments of the filter in the filter string
hbase-client/src/main/java/org/apache/hadoop/hbase/filter/ParseFilter.java