.class public LB27799205_3;
.super Ljava/lang/Object;

# A class with an unresolved array type should not fail hard (unless it's a primitive-type access).
# Make sure that merging is pro-active.

.method public static run()V
.registers 1
       return-void
.end method

# Use some non-object non-array input (non-Object because the merge should be Object).
.method public static test(Ljava/lang/Integer;[Ldo/not/resolve/K;Z)V
.registers 6
       # Make v0, v1 and v2 null. We'll use v0 as a merge of the inputs, v1 as null, and v2 as 0.
       const v0, 0
       const v1, 0
       const v2, 0

       # Conditional jump so we have a merge point.
       if-eqz v5, :LabelSelectUnresolved

:LabelSelectResolved
       move-object v0, v3
       goto :LabelMerged

:LabelSelectUnresolved
       move-object v0, v4
       goto :LabelMerged

:LabelMerged
       # At this point, v0 should be Object.

       # Test aput-object: v0[v2] = v1. Should fail for v0 not being an array.
       aput-object v1, v0, v2

       return-void

.end method
