private static Object @Nullable [] asArray(@NotNull Object o) {
    if (o instanceof Object[]) return (Object[])o;
    if (o instanceof Map.Entry) return new Object[]{((Map.Entry<?,?>)o).getKey(), ((Map.Entry<?,?>)o).getValue()};
    if (o instanceof Pair) return new Object[]{((Pair<?,?>)o).first, ((Pair<?,?>)o).second};
    if (o instanceof Trinity) return new Object[]{((Trinity<?,?,?>)o).first, ((Trinity<?,?,?>)o).second, ((Trinity<?,?,?>)o).third};
    return null;
  }
private static Object @Nullable [] asArray(@NotNull Object o)