public static Filter createFilterFromArguments(ArrayList<byte[]> filterArguments) {
    Preconditions.checkArgument(
      filterArguments.size() == 2 || filterArguments.size() == 3 || filterArguments.size() == 5,
      "Expected 2, 3 or 5 but got: %s", filterArguments.size());
    if (filterArguments.size() == 2) {
      byte[] family = ParseFilter.removeQuotesFromByteArray(filterArguments.get(0));
      byte[] qualifier = ParseFilter.removeQuotesFromByteArray(filterArguments.get(1));
      return new DependentColumnFilter(family, qualifier);

    } else if (filterArguments.size() == 3) {
      byte[] family = ParseFilter.removeQuotesFromByteArray(filterArguments.get(0));
      byte[] qualifier = ParseFilter.removeQuotesFromByteArray(filterArguments.get(1));
      boolean dropDependentColumn = ParseFilter.convertByteArrayToBoolean(filterArguments.get(2));
      return new DependentColumnFilter(family, qualifier, dropDependentColumn);

    } else if (filterArguments.size() == 5) {
      byte[] family = ParseFilter.removeQuotesFromByteArray(filterArguments.get(0));
      byte[] qualifier = ParseFilter.removeQuotesFromByteArray(filterArguments.get(1));
      boolean dropDependentColumn = ParseFilter.convertByteArrayToBoolean(filterArguments.get(2));
      CompareOperator op = ParseFilter.createCompareOperator(filterArguments.get(3));
      ByteArrayComparable comparator =
        ParseFilter.createComparator(ParseFilter.removeQuotesFromByteArray(filterArguments.get(4)));
      return new DependentColumnFilter(family, qualifier, dropDependentColumn, op, comparator);
    } else {
      throw new IllegalArgumentException("Expected 2, 3 or 5 but got: " + filterArguments.size());
    }
  }
Returns true if we should drop the dependent column, false otherwise
hbase-client/src/main/java/org/apache/hadoop/hbase/filter/DependentColumnFilter.java