code: public void sort(Object[] array, String[] properties, boolean[] reverse) {
          Class<?> arrayType = getObjectClass(array);
          if (arrayType != null) {
              sort(array, arrayType, properties, reverse);
          }       
      }
docs: Sort the given array by using the given properties to evaluate against
  each element in the array comparing the resulting values. If multiple
  values match the first property, then the second property is used,
  and so on. For example, if the object array contained User instances that
  had a lastName and firstName property, then you could sort the array by
  last name followed by first name via:
  <code>sort(users, #('lastName', 'firstName'), #(false, false))</code>.
  The array of reverse flags correspond to each property so that you could
  sort one property ascendingly and another descendingly. The two arrays
  <em>must</em> be the same length.  Note that the determination
  of the array type is based purely on the first non-<code>null</code>
  element in the array and all other instances in the array are expected to
  conform to the same type. Use
  {@link #sort(Object[], Class, String[], boolean[])} to explicitly provide
  the underlying array type.
  
  @param array The array to sort
  @param properties The name of the properties on the elements to sort with
  @param reverse The states of whether to reverse the orders