package androidx.work; import androidx.annotation.NonNull; import androidx.work.Data; import java.lang.reflect.Array; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; public final class ArrayCreatingInputMerger extends InputMerger { private Object concatenateArrayAndNonArray(Object obj, Object obj2) { int length = Array.getLength(obj); Object newInstance = Array.newInstance(obj2.getClass(), length + 1); System.arraycopy(obj, 0, newInstance, 0, length); Array.set(newInstance, length, obj2); return newInstance; } private Object concatenateArrays(Object obj, Object obj2) { int length = Array.getLength(obj); int length2 = Array.getLength(obj2); Object newInstance = Array.newInstance(obj.getClass().getComponentType(), length + length2); System.arraycopy(obj, 0, newInstance, 0, length); System.arraycopy(obj2, 0, newInstance, length, length2); return newInstance; } private Object concatenateNonArrays(Object obj, Object obj2) { Object newInstance = Array.newInstance(obj.getClass(), 2); Array.set(newInstance, 0, obj); Array.set(newInstance, 1, obj2); return newInstance; } private Object createArrayFor(Object obj) { Object newInstance = Array.newInstance(obj.getClass(), 1); Array.set(newInstance, 0, obj); return newInstance; } @Override // androidx.work.InputMerger @NonNull public Data merge(@NonNull List list) { Data.Builder builder = new Data.Builder(); HashMap hashMap = new HashMap(); loop0: for (Data data : list) { Iterator> it = data.getKeyValueMap().entrySet().iterator(); while (true) { if (it.hasNext()) { Map.Entry next = it.next(); String key = next.getKey(); Object value = next.getValue(); Class cls = value.getClass(); Object obj = hashMap.get(key); if (obj != null) { Class cls2 = obj.getClass(); if (cls2.equals(cls)) { value = cls2.isArray() ? concatenateArrays(obj, value) : concatenateNonArrays(obj, value); } else if (cls2.isArray() && cls2.getComponentType().equals(cls)) { value = concatenateArrayAndNonArray(obj, value); } else if (!cls.isArray() || !cls.getComponentType().equals(cls2)) { break loop0; } else { value = concatenateArrayAndNonArray(value, obj); } } else if (!cls.isArray()) { value = createArrayFor(value); } hashMap.put(key, value); } } throw new IllegalArgumentException(); } builder.putAll(hashMap); return builder.build(); } }