@SuppressWarnings("unchecked") private Map<String, String[]> asHeaders(final Map<String, ?> headers) { if (headers.isEmpty()) { return ImmutableMap.of(); } Object value = Iterables.getFirst(headers.entrySet(), null).getValue(); if (value instanceof String) { return simpleValueToArray((Map<String, String>) headers); } if (value instanceof String[]) { return (Map<String, String[]>) headers; } if (value instanceof Iterable) { return iterableValueToArray((Map<String, Iterable<String>>) headers); } throw new IllegalArgumentException("Unknown header value type [" + value.getClass() + "]"); }