code: @Override
    public ImmutableMap<K, V> getAllPresent(Iterable<?> keys) {
      Map<K, V> result = Maps.newLinkedHashMap();
      for (Object key : keys) {
        if (!result.containsKey(key)) {
          @SuppressWarnings("unchecked")
          K castKey = (K) key;
          V value = getIfPresent(key);
          if (value != null) {
            result.put(castKey, value);
          }
        }
      }
      return ImmutableMap.copyOf(result);
    }
docs: This implementation of {@code getAllPresent} lacks any insight into the internal cache data
  structure, and is thus forced to return the query keys instead of the cached keys. This is only
  possible with an unsafe cast which requires {@code keys} to actually be of type {@code K}.
  
  {@inheritDoc}
  
  @since 11.0