code: @SafeVarargs
      public static <T> T[] removeAll(final T[] a, final Object... elements) {
          if (N.isNullOrEmpty(a)) {
              return a;
          } else if (N.isNullOrEmpty(elements)) {
              return a.clone();
          } else if (elements.length == 1) {
              return removeAllOccurrences(a, elements[0]);
          }
  
          final Set<Object> set = N.asSet(elements);
          final List<T> result = new ArrayList<>();
  
          for (T e : a) {
              if (!set.contains(e)) {
                  result.add(e);
              }
          }
  
          return result.toArray((T[]) N.newArray(a.getClass().getComponentType(), result.size()));
      }
docs: Returns a new array with removes all the occurrences of specified elements from <code>a</code>
  
  @param a
  @param elements
  @return
  @see Collection#removeAll(Collection)