public class org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates extends org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates
  super_class: org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates
{
  private final org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo arraycopyGenericSnippet;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo arraycopyUnrolledSnippet;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo arraycopyExactSnippet;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo arraycopyZeroLengthSnippet;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo arraycopyCheckcastSnippet;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo arraycopyNativeSnippet;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo checkcastArraycopyWithSlowPathWork;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo genericArraycopyWithSlowPathWork;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private jdk.vm.ci.meta.ResolvedJavaMethod originalArraycopy;
    descriptor: Ljdk/vm/ci/meta/ResolvedJavaMethod;
    flags: (0x0002) ACC_PRIVATE

  private final org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters counters;
    descriptor: Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 352
            ldc Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.graalvm.compiler.options.OptionValues, java.lang.Iterable<org.graalvm.compiler.debug.DebugHandlersFactory>, org.graalvm.compiler.replacements.SnippetCounter$Group$Factory, org.graalvm.compiler.hotspot.meta.HotSpotProviders, jdk.vm.ci.code.TargetDescription);
    descriptor: (Lorg/graalvm/compiler/options/OptionValues;Ljava/lang/Iterable;Lorg/graalvm/compiler/replacements/SnippetCounter$Group$Factory;Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;Ljdk/vm/ci/code/TargetDescription;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=6
        start local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates this
        start local 1 // org.graalvm.compiler.options.OptionValues options
        start local 2 // java.lang.Iterable factories
        start local 3 // org.graalvm.compiler.replacements.SnippetCounter$Group$Factory factory
        start local 4 // org.graalvm.compiler.hotspot.meta.HotSpotProviders providers
        start local 5 // jdk.vm.ci.code.TargetDescription target
         0: .line 367
            aload 0 /* this */
            aload 1 /* options */
            aload 2 /* factories */
            aload 4 /* providers */
            aload 4 /* providers */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getSnippetReflection:()Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
            aload 5 /* target */
            invokespecial org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates.<init>:(Lorg/graalvm/compiler/options/OptionValues;Ljava/lang/Iterable;Lorg/graalvm/compiler/phases/util/Providers;Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;Ljdk/vm/ci/code/TargetDescription;)V
         1: .line 353
            aload 0 /* this */
            aload 0 /* this */
            ldc "arraycopyGenericSnippet"
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.snippet:(Ljava/lang/String;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyGenericSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         2: .line 354
            aload 0 /* this */
            aload 0 /* this */
            ldc "arraycopyUnrolledSnippet"
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.snippet:(Ljava/lang/String;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyUnrolledSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         3: .line 355
            aload 0 /* this */
            aload 0 /* this */
            ldc "arraycopyExactSnippet"
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.snippet:(Ljava/lang/String;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyExactSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         4: .line 356
            aload 0 /* this */
            aload 0 /* this */
            ldc "arraycopyZeroLengthSnippet"
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.snippet:(Ljava/lang/String;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyZeroLengthSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         5: .line 357
            aload 0 /* this */
            aload 0 /* this */
            ldc "arraycopyCheckcastSnippet"
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.snippet:(Ljava/lang/String;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyCheckcastSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         6: .line 358
            aload 0 /* this */
            aload 0 /* this */
            ldc "arraycopyNativeSnippet"
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.snippet:(Ljava/lang/String;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyNativeSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         7: .line 360
            aload 0 /* this */
            aload 0 /* this */
            ldc "checkcastArraycopyWithSlowPathWork"
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.snippet:(Ljava/lang/String;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.checkcastArraycopyWithSlowPathWork:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         8: .line 361
            aload 0 /* this */
            aload 0 /* this */
            ldc "genericArraycopyWithSlowPathWork"
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.snippet:(Ljava/lang/String;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.genericArraycopyWithSlowPathWork:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         9: .line 368
            aload 0 /* this */
            new org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters
            dup
            aload 3 /* factory */
            invokespecial org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group$Factory;)V
            putfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.counters:Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;
        10: .line 369
            return
        end local 5 // jdk.vm.ci.code.TargetDescription target
        end local 4 // org.graalvm.compiler.hotspot.meta.HotSpotProviders providers
        end local 3 // org.graalvm.compiler.replacements.SnippetCounter$Group$Factory factory
        end local 2 // java.lang.Iterable factories
        end local 1 // org.graalvm.compiler.options.OptionValues options
        end local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Templates;
            0   11     1    options  Lorg/graalvm/compiler/options/OptionValues;
            0   11     2  factories  Ljava/lang/Iterable<Lorg/graalvm/compiler/debug/DebugHandlersFactory;>;
            0   11     3    factory  Lorg/graalvm/compiler/replacements/SnippetCounter$Group$Factory;
            0   11     4  providers  Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;
            0   11     5     target  Ljdk/vm/ci/code/TargetDescription;
    Signature: (Lorg/graalvm/compiler/options/OptionValues;Ljava/lang/Iterable<Lorg/graalvm/compiler/debug/DebugHandlersFactory;>;Lorg/graalvm/compiler/replacements/SnippetCounter$Group$Factory;Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;Ljdk/vm/ci/code/TargetDescription;)V
    MethodParameters:
           Name  Flags
      options    
      factories  
      factory    
      providers  
      target     

  protected org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippet(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=3, args_size=2
        start local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates this
        start local 1 // java.lang.String methodName
         0: .line 372
            aload 0 /* this */
            ldc Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets;
            aload 1 /* methodName */
            iconst_1
            anewarray jdk.internal.vm.compiler.word.LocationIdentity
            dup
            iconst_0
            invokestatic jdk.internal.vm.compiler.word.LocationIdentity.any:()Ljdk/internal/vm/compiler/word/LocationIdentity;
            aastore
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.snippet:(Ljava/lang/Class;Ljava/lang/String;[Ljdk/internal/vm/compiler/word/LocationIdentity;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 2 /* info */
        start local 2 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo info
         1: .line 373
            aload 2 /* info */
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.originalArraycopy:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo.setOriginalMethod:(Ljdk/vm/ci/meta/ResolvedJavaMethod;)V
         2: .line 374
            aload 2 /* info */
            areturn
        end local 2 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo info
        end local 1 // java.lang.String methodName
        end local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Templates;
            0    3     1  methodName  Ljava/lang/String;
            1    3     2        info  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    MethodParameters:
            Name  Flags
      methodName  

  public void lower(org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode, org.graalvm.compiler.nodes.spi.LoweringTool);
    descriptor: (Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopyNode;Lorg/graalvm/compiler/nodes/spi/LoweringTool;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=11, args_size=3
        start local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates this
        start local 1 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode arraycopy
        start local 2 // org.graalvm.compiler.nodes.spi.LoweringTool tool
         0: .line 378
            aload 1 /* arraycopy */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.selectComponentKind:(Lorg/graalvm/compiler/replacements/nodes/BasicArrayCopyNode;)Ljdk/vm/ci/meta/JavaKind;
            astore 3 /* elementKind */
        start local 3 // jdk.vm.ci.meta.JavaKind elementKind
         1: .line 382
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode.getSource:()Lorg/graalvm/compiler/nodes/ValueNode;
            getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            invokestatic org.graalvm.compiler.nodes.type.StampTool.typeOrNull:(Lorg/graalvm/compiler/core/common/type/Stamp;)Ljdk/vm/ci/meta/ResolvedJavaType;
            astore 6 /* srcType */
        start local 6 // jdk.vm.ci.meta.ResolvedJavaType srcType
         2: .line 383
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode.getDestination:()Lorg/graalvm/compiler/nodes/ValueNode;
            getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            invokestatic org.graalvm.compiler.nodes.type.StampTool.typeOrNull:(Lorg/graalvm/compiler/core/common/type/Stamp;)Ljdk/vm/ci/meta/ResolvedJavaType;
            astore 7 /* destType */
        start local 7 // jdk.vm.ci.meta.ResolvedJavaType destType
         3: .line 384
            aload 6 /* srcType */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.canBeArray:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
            ifeq 4
            aload 7 /* destType */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.canBeArray:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
            ifne 7
         4: .line 387
      StackMap locals: org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode org.graalvm.compiler.nodes.spi.LoweringTool jdk.vm.ci.meta.JavaKind top top jdk.vm.ci.meta.ResolvedJavaType jdk.vm.ci.meta.ResolvedJavaType
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyNativeSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 4 /* snippetInfo */
        start local 4 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
         5: .line 388
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.UNDEFINED_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            astore 5 /* arrayTypeCheck */
        start local 5 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
         6: .line 389
            goto 40
        end local 5 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        end local 4 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
         7: .line 390
      StackMap locals:
      StackMap stack:
            aload 6 /* srcType */
            ifnonnull 8
            aconst_null
            goto 9
      StackMap locals:
      StackMap stack:
         8: aload 6 /* srcType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.getComponentType:()Ljdk/vm/ci/meta/ResolvedJavaType;
      StackMap locals:
      StackMap stack: jdk.vm.ci.meta.ResolvedJavaType
         9: astore 8 /* srcComponentType */
        start local 8 // jdk.vm.ci.meta.ResolvedJavaType srcComponentType
        10: .line 391
            aload 7 /* destType */
            ifnonnull 11
            aconst_null
            goto 12
      StackMap locals: jdk.vm.ci.meta.ResolvedJavaType
      StackMap stack:
        11: aload 7 /* destType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.getComponentType:()Ljdk/vm/ci/meta/ResolvedJavaType;
      StackMap locals:
      StackMap stack: jdk.vm.ci.meta.ResolvedJavaType
        12: astore 9 /* destComponentType */
        start local 9 // jdk.vm.ci.meta.ResolvedJavaType destComponentType
        13: .line 393
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode.isExact:()Z
            ifeq 17
        14: .line 395
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyExactSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 4 /* snippetInfo */
        start local 4 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        15: .line 396
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.NO_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            astore 5 /* arrayTypeCheck */
        start local 5 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        16: .line 397
            goto 40
        end local 5 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        end local 4 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
      StackMap locals: jdk.vm.ci.meta.ResolvedJavaType
      StackMap stack:
        17: aload 8 /* srcComponentType */
            ifnonnull 21
            aload 9 /* destComponentType */
            ifnonnull 21
        18: .line 399
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyGenericSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 4 /* snippetInfo */
        start local 4 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        19: .line 401
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.NO_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            astore 5 /* arrayTypeCheck */
        start local 5 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        20: .line 402
            goto 40
        end local 5 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        end local 4 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
      StackMap locals:
      StackMap stack:
        21: aload 8 /* srcComponentType */
            ifnull 30
            aload 9 /* destComponentType */
            ifnull 30
        22: .line 403
            aload 8 /* srcComponentType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isPrimitive:()Z
            ifne 26
            aload 9 /* destComponentType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isPrimitive:()Z
            ifne 26
        23: .line 406
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyCheckcastSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 4 /* snippetInfo */
        start local 4 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        24: .line 407
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.NO_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            astore 5 /* arrayTypeCheck */
        start local 5 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        25: .line 408
            goto 40
        end local 5 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        end local 4 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        26: .line 411
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.$assertionsDisabled:Z
            ifne 27
            aload 8 /* srcComponentType */
            aload 9 /* destComponentType */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 27
            new java.lang.AssertionError
            dup
            ldc "must be handled by arraycopy.isExact()"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        27: .line 412
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyNativeSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 4 /* snippetInfo */
        start local 4 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        28: .line 413
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.UNDEFINED_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            astore 5 /* arrayTypeCheck */
        start local 5 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        29: .line 415
            goto 40
        end local 5 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        end local 4 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        30: .line 416
      StackMap locals:
      StackMap stack:
            aload 8 /* srcComponentType */
            ifnull 31
            aload 8 /* srcComponentType */
            goto 32
      StackMap locals:
      StackMap stack:
        31: aload 9 /* destComponentType */
      StackMap locals:
      StackMap stack: jdk.vm.ci.meta.ResolvedJavaType
        32: astore 10 /* nonNullComponentType */
        start local 10 // jdk.vm.ci.meta.ResolvedJavaType nonNullComponentType
        33: .line 417
            aload 10 /* nonNullComponentType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isPrimitive:()Z
            ifeq 38
        34: .line 420
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyExactSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 4 /* snippetInfo */
        start local 4 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        35: .line 421
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.HUB_BASED_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            astore 5 /* arrayTypeCheck */
        start local 5 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        36: .line 422
            aload 10 /* nonNullComponentType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.getJavaKind:()Ljdk/vm/ci/meta/JavaKind;
            astore 3 /* elementKind */
        37: .line 423
            goto 40
        end local 5 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        end local 4 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        38: .line 426
      StackMap locals: jdk.vm.ci.meta.ResolvedJavaType
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyCheckcastSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 4 /* snippetInfo */
        start local 4 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        39: .line 427
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.LAYOUT_HELPER_BASED_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            astore 5 /* arrayTypeCheck */
        end local 10 // jdk.vm.ci.meta.ResolvedJavaType nonNullComponentType
        end local 9 // jdk.vm.ci.meta.ResolvedJavaType destComponentType
        end local 8 // jdk.vm.ci.meta.ResolvedJavaType srcComponentType
        start local 5 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        40: .line 434
      StackMap locals: org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode org.graalvm.compiler.nodes.spi.LoweringTool jdk.vm.ci.meta.JavaKind org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck jdk.vm.ci.meta.ResolvedJavaType jdk.vm.ci.meta.ResolvedJavaType
      StackMap stack:
            aload 4 /* snippetInfo */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyNativeSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpeq 43
            aload 4 /* snippetInfo */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyGenericSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpeq 43
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode.getLength:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.isConstant:()Z
            ifeq 43
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode.getLength:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
            invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
            lconst_0
            lcmp
            ifne 43
        41: .line 440
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyZeroLengthSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 4 /* snippetInfo */
        42: .line 441
            goto 45
      StackMap locals:
      StackMap stack:
        43: aload 4 /* snippetInfo */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyExactSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpne 45
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode.getLength:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.shouldUnroll:(Lorg/graalvm/compiler/nodes/ValueNode;)Z
            ifeq 45
        44: .line 442
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyUnrolledSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 4 /* snippetInfo */
        45: .line 446
      StackMap locals:
      StackMap stack:
            new org.graalvm.compiler.replacements.SnippetTemplate$Arguments
            dup
            aload 4 /* snippetInfo */
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
            aload 2 /* tool */
            invokeinterface org.graalvm.compiler.nodes.spi.LoweringTool.getLoweringStage:()Lorg/graalvm/compiler/nodes/spi/LoweringTool$LoweringStage;
            invokespecial org.graalvm.compiler.replacements.SnippetTemplate$Arguments.<init>:(Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;Lorg/graalvm/compiler/nodes/spi/LoweringTool$LoweringStage;)V
            astore 8 /* args */
        start local 8 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
        46: .line 447
            aload 8 /* args */
            ldc "src"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode.getSource:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        47: .line 448
            aload 8 /* args */
            ldc "srcPos"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode.getSourcePosition:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        48: .line 449
            aload 8 /* args */
            ldc "dest"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode.getDestination:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        49: .line 450
            aload 8 /* args */
            ldc "destPos"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode.getDestinationPosition:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        50: .line 451
            aload 8 /* args */
            ldc "length"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode.getLength:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        51: .line 452
            aload 4 /* snippetInfo */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyNativeSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpeq 54
        52: .line 453
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.$assertionsDisabled:Z
            ifne 53
            aload 5 /* arrayTypeCheck */
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.UNDEFINED_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            if_acmpne 53
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        53: .line 454
      StackMap locals: org.graalvm.compiler.replacements.SnippetTemplate$Arguments
      StackMap stack:
            aload 8 /* args */
            ldc "arrayTypeCheck"
            aload 5 /* arrayTypeCheck */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        54: .line 456
      StackMap locals:
      StackMap stack:
            aload 4 /* snippetInfo */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyUnrolledSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpne 59
        55: .line 457
            aload 8 /* args */
            ldc "elementKind"
            aload 3 /* elementKind */
            ifnull 56
            aload 3 /* elementKind */
            goto 57
      StackMap locals: org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode org.graalvm.compiler.nodes.spi.LoweringTool jdk.vm.ci.meta.JavaKind org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck jdk.vm.ci.meta.ResolvedJavaType jdk.vm.ci.meta.ResolvedJavaType org.graalvm.compiler.replacements.SnippetTemplate$Arguments
      StackMap stack: org.graalvm.compiler.replacements.SnippetTemplate$Arguments java.lang.String
        56: getstatic jdk.vm.ci.meta.JavaKind.Illegal:Ljdk/vm/ci/meta/JavaKind;
      StackMap locals: org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode org.graalvm.compiler.nodes.spi.LoweringTool jdk.vm.ci.meta.JavaKind org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck jdk.vm.ci.meta.ResolvedJavaType jdk.vm.ci.meta.ResolvedJavaType org.graalvm.compiler.replacements.SnippetTemplate$Arguments
      StackMap stack: org.graalvm.compiler.replacements.SnippetTemplate$Arguments java.lang.String jdk.vm.ci.meta.JavaKind
        57: invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        58: .line 458
            aload 8 /* args */
            ldc "unrolledLength"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode.getLength:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
            invokeinterface jdk.vm.ci.meta.JavaConstant.asInt:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        59: .line 460
      StackMap locals:
      StackMap stack:
            aload 4 /* snippetInfo */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyExactSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpne 64
        60: .line 461
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.$assertionsDisabled:Z
            ifne 61
            aload 3 /* elementKind */
            ifnonnull 61
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        61: .line 462
      StackMap locals:
      StackMap stack:
            aload 8 /* args */
            ldc "elementKind"
            aload 3 /* elementKind */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        62: .line 463
            aload 8 /* args */
            ldc "elementKindCounter"
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.counters:Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters.arraycopyCallCounters:Ljava/util/EnumMap;
            aload 3 /* elementKind */
            invokevirtual java.util.EnumMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        63: .line 464
            aload 8 /* args */
            ldc "elementKindCopiedCounter"
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.counters:Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters.arraycopyCallCopiedCounters:Ljava/util/EnumMap;
            aload 3 /* elementKind */
            invokevirtual java.util.EnumMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        64: .line 466
      StackMap locals:
      StackMap stack:
            aload 8 /* args */
            ldc "counters"
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.counters:Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        65: .line 467
            aload 4 /* snippetInfo */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyCheckcastSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpne 68
        66: .line 468
            aload 8 /* args */
            ldc "workSnippet"
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.checkcastArraycopyWithSlowPathWork:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        67: .line 469
            aload 8 /* args */
            ldc "elementKind"
            getstatic jdk.vm.ci.meta.JavaKind.Illegal:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        68: .line 471
      StackMap locals:
      StackMap stack:
            aload 4 /* snippetInfo */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyGenericSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpne 71
        69: .line 472
            aload 8 /* args */
            ldc "workSnippet"
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.genericArraycopyWithSlowPathWork:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        70: .line 473
            aload 8 /* args */
            ldc "elementKind"
            getstatic jdk.vm.ci.meta.JavaKind.Illegal:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        71: .line 476
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 8 /* args */
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.instantiate:(Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;Lorg/graalvm/compiler/replacements/nodes/BasicArrayCopyNode;)V
        72: .line 477
            return
        end local 8 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
        end local 7 // jdk.vm.ci.meta.ResolvedJavaType destType
        end local 6 // jdk.vm.ci.meta.ResolvedJavaType srcType
        end local 5 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        end local 4 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        end local 3 // jdk.vm.ci.meta.JavaKind elementKind
        end local 2 // org.graalvm.compiler.nodes.spi.LoweringTool tool
        end local 1 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode arraycopy
        end local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   73     0                  this  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Templates;
            0   73     1             arraycopy  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopyNode;
            0   73     2                  tool  Lorg/graalvm/compiler/nodes/spi/LoweringTool;
            1   73     3           elementKind  Ljdk/vm/ci/meta/JavaKind;
            5    7     4           snippetInfo  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
           15   17     4           snippetInfo  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
           19   21     4           snippetInfo  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
           24   26     4           snippetInfo  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
           28   30     4           snippetInfo  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
           35   38     4           snippetInfo  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
           39   73     4           snippetInfo  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            6    7     5        arrayTypeCheck  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
           16   17     5        arrayTypeCheck  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
           20   21     5        arrayTypeCheck  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
           25   26     5        arrayTypeCheck  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
           29   30     5        arrayTypeCheck  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
           36   38     5        arrayTypeCheck  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
           40   73     5        arrayTypeCheck  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            2   73     6               srcType  Ljdk/vm/ci/meta/ResolvedJavaType;
            3   73     7              destType  Ljdk/vm/ci/meta/ResolvedJavaType;
           10   40     8      srcComponentType  Ljdk/vm/ci/meta/ResolvedJavaType;
           13   40     9     destComponentType  Ljdk/vm/ci/meta/ResolvedJavaType;
           33   40    10  nonNullComponentType  Ljdk/vm/ci/meta/ResolvedJavaType;
           46   73     8                  args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
    MethodParameters:
           Name  Flags
      arraycopy  
      tool       

  public void lower(org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyWithSlowPathNode, org.graalvm.compiler.nodes.spi.LoweringTool);
    descriptor: (Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopyWithSlowPathNode;Lorg/graalvm/compiler/nodes/spi/LoweringTool;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates this
        start local 1 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyWithSlowPathNode arraycopy
        start local 2 // org.graalvm.compiler.nodes.spi.LoweringTool tool
         0: .line 480
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyWithSlowPathNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            astore 3 /* graph */
        start local 3 // org.graalvm.compiler.nodes.StructuredGraph graph
         1: .line 481
            aload 3 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph$GuardsStage.areFrameStatesAtDeopts:()Z
            ifne 3
         2: .line 483
            return
         3: .line 486
      StackMap locals: org.graalvm.compiler.nodes.StructuredGraph
      StackMap stack:
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyWithSlowPathNode.getSnippet:()Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 4 /* snippetInfo */
        start local 4 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
         4: .line 487
            new org.graalvm.compiler.replacements.SnippetTemplate$Arguments
            dup
            aload 4 /* snippetInfo */
            aload 3 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
            aload 2 /* tool */
            invokeinterface org.graalvm.compiler.nodes.spi.LoweringTool.getLoweringStage:()Lorg/graalvm/compiler/nodes/spi/LoweringTool$LoweringStage;
            invokespecial org.graalvm.compiler.replacements.SnippetTemplate$Arguments.<init>:(Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;Lorg/graalvm/compiler/nodes/spi/LoweringTool$LoweringStage;)V
            astore 5 /* args */
        start local 5 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
         5: .line 488
            aload 5 /* args */
            ldc "src"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyWithSlowPathNode.getSource:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         6: .line 489
            aload 5 /* args */
            ldc "srcPos"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyWithSlowPathNode.getSourcePosition:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         7: .line 490
            aload 5 /* args */
            ldc "dest"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyWithSlowPathNode.getDestination:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         8: .line 491
            aload 5 /* args */
            ldc "destPos"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyWithSlowPathNode.getDestinationPosition:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         9: .line 492
            aload 5 /* args */
            ldc "length"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyWithSlowPathNode.getLength:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        10: .line 493
            aload 5 /* args */
            ldc "counters"
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.counters:Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        11: .line 494
            aload 0 /* this */
            aload 5 /* args */
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.instantiate:(Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;Lorg/graalvm/compiler/replacements/nodes/BasicArrayCopyNode;)V
        12: .line 495
            return
        end local 5 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
        end local 4 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        end local 3 // org.graalvm.compiler.nodes.StructuredGraph graph
        end local 2 // org.graalvm.compiler.nodes.spi.LoweringTool tool
        end local 1 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyWithSlowPathNode arraycopy
        end local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   13     0         this  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Templates;
            0   13     1    arraycopy  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopyWithSlowPathNode;
            0   13     2         tool  Lorg/graalvm/compiler/nodes/spi/LoweringTool;
            1   13     3        graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            4   13     4  snippetInfo  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            5   13     5         args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
    MethodParameters:
           Name  Flags
      arraycopy  
      tool       

  private static boolean canBeArray(jdk.vm.ci.meta.ResolvedJavaType);
    descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.vm.ci.meta.ResolvedJavaType type
         0: .line 498
            aload 0 /* type */
            ifnull 1
            aload 0 /* type */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isJavaLangObject:()Z
            ifne 1
            aload 0 /* type */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isArray:()Z
            ifne 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 0 // jdk.vm.ci.meta.ResolvedJavaType type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  type  Ljdk/vm/ci/meta/ResolvedJavaType;
    MethodParameters:
      Name  Flags
      type  

  public static jdk.vm.ci.meta.JavaKind selectComponentKind(org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode);
    descriptor: (Lorg/graalvm/compiler/replacements/nodes/BasicArrayCopyNode;)Ljdk/vm/ci/meta/JavaKind;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode arraycopy
         0: .line 502
            aload 0 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.getSource:()Lorg/graalvm/compiler/nodes/ValueNode;
            getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            invokestatic org.graalvm.compiler.nodes.type.StampTool.typeOrNull:(Lorg/graalvm/compiler/core/common/type/Stamp;)Ljdk/vm/ci/meta/ResolvedJavaType;
            astore 1 /* srcType */
        start local 1 // jdk.vm.ci.meta.ResolvedJavaType srcType
         1: .line 503
            aload 0 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.getDestination:()Lorg/graalvm/compiler/nodes/ValueNode;
            getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            invokestatic org.graalvm.compiler.nodes.type.StampTool.typeOrNull:(Lorg/graalvm/compiler/core/common/type/Stamp;)Ljdk/vm/ci/meta/ResolvedJavaType;
            astore 2 /* destType */
        start local 2 // jdk.vm.ci.meta.ResolvedJavaType destType
         2: .line 505
            aload 1 /* srcType */
            ifnull 3
            aload 1 /* srcType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isArray:()Z
            ifeq 3
            aload 2 /* destType */
            ifnull 3
            aload 2 /* destType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isArray:()Z
            ifne 4
         3: .line 506
      StackMap locals: jdk.vm.ci.meta.ResolvedJavaType jdk.vm.ci.meta.ResolvedJavaType
      StackMap stack:
            aconst_null
            areturn
         4: .line 508
      StackMap locals:
      StackMap stack:
            aload 2 /* destType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.getComponentType:()Ljdk/vm/ci/meta/ResolvedJavaType;
            aload 1 /* srcType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.getComponentType:()Ljdk/vm/ci/meta/ResolvedJavaType;
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isAssignableFrom:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
            ifne 6
         5: .line 509
            aconst_null
            areturn
         6: .line 511
      StackMap locals:
      StackMap stack:
            aload 0 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.isExact:()Z
            ifne 8
         7: .line 512
            aconst_null
            areturn
         8: .line 514
      StackMap locals:
      StackMap stack:
            aload 1 /* srcType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.getComponentType:()Ljdk/vm/ci/meta/ResolvedJavaType;
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.getJavaKind:()Ljdk/vm/ci/meta/JavaKind;
            areturn
        end local 2 // jdk.vm.ci.meta.ResolvedJavaType destType
        end local 1 // jdk.vm.ci.meta.ResolvedJavaType srcType
        end local 0 // org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode arraycopy
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0  arraycopy  Lorg/graalvm/compiler/replacements/nodes/BasicArrayCopyNode;
            1    9     1    srcType  Ljdk/vm/ci/meta/ResolvedJavaType;
            2    9     2   destType  Ljdk/vm/ci/meta/ResolvedJavaType;
    MethodParameters:
           Name  Flags
      arraycopy  

  private static boolean shouldUnroll(org.graalvm.compiler.nodes.ValueNode);
    descriptor: (Lorg/graalvm/compiler/nodes/ValueNode;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.nodes.ValueNode length
         0: .line 518
            aload 0 /* length */
            invokevirtual org.graalvm.compiler.nodes.ValueNode.isConstant:()Z
            ifeq 1
            aload 0 /* length */
            invokevirtual org.graalvm.compiler.nodes.ValueNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
            invokeinterface jdk.vm.ci.meta.JavaConstant.asInt:()I
            bipush 8
            if_icmpgt 1
            aload 0 /* length */
            invokevirtual org.graalvm.compiler.nodes.ValueNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
            invokeinterface jdk.vm.ci.meta.JavaConstant.asInt:()I
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // org.graalvm.compiler.nodes.ValueNode length
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0  length  Lorg/graalvm/compiler/nodes/ValueNode;
    MethodParameters:
        Name  Flags
      length  

  private void instantiate(org.graalvm.compiler.replacements.SnippetTemplate$Arguments, org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode);
    descriptor: (Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;Lorg/graalvm/compiler/replacements/nodes/BasicArrayCopyNode;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=11, args_size=3
        start local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates this
        start local 1 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
        start local 2 // org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode arraycopy
         0: .line 529
            aload 2 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            astore 3 /* graph */
        start local 3 // org.graalvm.compiler.nodes.StructuredGraph graph
         1: .line 530
            aload 0 /* this */
            aload 2 /* arraycopy */
            aload 1 /* args */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.template:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;)Lorg/graalvm/compiler/replacements/SnippetTemplate;
            astore 4 /* template */
        start local 4 // org.graalvm.compiler.replacements.SnippetTemplate template
         2: .line 531
            aload 4 /* template */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.providers:Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.util.Providers.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 2 /* arraycopy */
            getstatic org.graalvm.compiler.replacements.SnippetTemplate.DEFAULT_REPLACER:Lorg/graalvm/compiler/replacements/SnippetTemplate$UsageReplacer;
            aload 1 /* args */
            iconst_0
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate.instantiate:(Ljdk/vm/ci/meta/MetaAccessProvider;Lorg/graalvm/compiler/nodes/FixedNode;Lorg/graalvm/compiler/replacements/SnippetTemplate$UsageReplacer;Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;Z)Ljdk/internal/vm/compiler/collections/UnmodifiableEconomicMap;
            astore 5 /* replacements */
        start local 5 // jdk.internal.vm.compiler.collections.UnmodifiableEconomicMap replacements
         3: .line 532
            aload 5 /* replacements */
            invokeinterface jdk.internal.vm.compiler.collections.UnmodifiableEconomicMap.getKeys:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 7
            goto 24
      StackMap locals: org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates org.graalvm.compiler.replacements.SnippetTemplate$Arguments org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.replacements.SnippetTemplate jdk.internal.vm.compiler.collections.UnmodifiableEconomicMap top java.util.Iterator
      StackMap stack:
         4: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.graph.Node
            astore 6 /* originalNode */
        start local 6 // org.graalvm.compiler.graph.Node originalNode
         5: .line 533
            aload 6 /* originalNode */
            instanceof org.graalvm.compiler.nodes.Invoke
            ifeq 19
         6: .line 534
            aload 5 /* replacements */
            aload 6 /* originalNode */
            invokeinterface jdk.internal.vm.compiler.collections.UnmodifiableEconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.compiler.nodes.Invoke
            astore 8 /* invoke */
        start local 8 // org.graalvm.compiler.nodes.Invoke invoke
         7: .line 535
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.$assertionsDisabled:Z
            ifne 8
            aload 8 /* invoke */
            invokeinterface org.graalvm.compiler.nodes.Invoke.asNode:()Lorg/graalvm/compiler/nodes/FixedNode;
            invokevirtual org.graalvm.compiler.nodes.FixedNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            aload 3 /* graph */
            if_acmpeq 8
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         8: .line 536
      StackMap locals: org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates org.graalvm.compiler.replacements.SnippetTemplate$Arguments org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.replacements.SnippetTemplate jdk.internal.vm.compiler.collections.UnmodifiableEconomicMap org.graalvm.compiler.graph.Node java.util.Iterator org.graalvm.compiler.nodes.Invoke
      StackMap stack:
            aload 8 /* invoke */
            invokeinterface org.graalvm.compiler.nodes.Invoke.callTarget:()Lorg/graalvm/compiler/nodes/CallTargetNode;
            astore 9 /* call */
        start local 9 // org.graalvm.compiler.nodes.CallTargetNode call
         9: .line 538
            aload 9 /* call */
            invokevirtual org.graalvm.compiler.nodes.CallTargetNode.targetMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.originalArraycopy:Ljdk/vm/ci/meta/ResolvedJavaMethod;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifne 11
        10: .line 539
            new org.graalvm.compiler.debug.GraalError
            dup
            ldc "unexpected invoke %s in snippet"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 9 /* call */
            invokevirtual org.graalvm.compiler.nodes.CallTargetNode.targetMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
            aastore
            invokespecial org.graalvm.compiler.debug.GraalError.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
            athrow
        11: .line 542
      StackMap locals: org.graalvm.compiler.nodes.CallTargetNode
      StackMap stack:
            aload 3 /* graph */
            new org.graalvm.compiler.nodes.InvokeNode
            dup
            aload 8 /* invoke */
            invokeinterface org.graalvm.compiler.nodes.Invoke.callTarget:()Lorg/graalvm/compiler/nodes/CallTargetNode;
            aload 2 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.getBci:()I
            invokespecial org.graalvm.compiler.nodes.InvokeNode.<init>:(Lorg/graalvm/compiler/nodes/CallTargetNode;I)V
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.add:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
            checkcast org.graalvm.compiler.nodes.InvokeNode
            astore 10 /* newInvoke */
        start local 10 // org.graalvm.compiler.nodes.InvokeNode newInvoke
        12: .line 543
            aload 2 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.stateDuring:()Lorg/graalvm/compiler/nodes/FrameState;
            ifnull 15
        13: .line 544
            aload 10 /* newInvoke */
            aload 2 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.stateDuring:()Lorg/graalvm/compiler/nodes/FrameState;
            invokevirtual org.graalvm.compiler.nodes.InvokeNode.setStateDuring:(Lorg/graalvm/compiler/nodes/FrameState;)V
        14: .line 545
            goto 17
        15: .line 546
      StackMap locals: org.graalvm.compiler.nodes.InvokeNode
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.$assertionsDisabled:Z
            ifne 16
            aload 2 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
            ifnonnull 16
            new java.lang.AssertionError
            dup
            aload 2 /* arraycopy */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        16: .line 547
      StackMap locals:
      StackMap stack:
            aload 10 /* newInvoke */
            aload 2 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
            invokevirtual org.graalvm.compiler.nodes.InvokeNode.setStateAfter:(Lorg/graalvm/compiler/nodes/FrameState;)V
        17: .line 549
      StackMap locals:
      StackMap stack:
            aload 3 /* graph */
            aload 8 /* invoke */
            invokeinterface org.graalvm.compiler.nodes.Invoke.asNode:()Lorg/graalvm/compiler/nodes/FixedNode;
            checkcast org.graalvm.compiler.nodes.InvokeNode
            aload 10 /* newInvoke */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.replaceFixedWithFixed:(Lorg/graalvm/compiler/nodes/FixedWithNextNode;Lorg/graalvm/compiler/nodes/FixedWithNextNode;)V
        end local 10 // org.graalvm.compiler.nodes.InvokeNode newInvoke
        end local 9 // org.graalvm.compiler.nodes.CallTargetNode call
        end local 8 // org.graalvm.compiler.nodes.Invoke invoke
        18: .line 550
            goto 24
      StackMap locals:
      StackMap stack:
        19: aload 6 /* originalNode */
            instanceof org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyWithSlowPathNode
            ifeq 24
        20: .line 551
            aload 5 /* replacements */
            aload 6 /* originalNode */
            invokeinterface jdk.internal.vm.compiler.collections.UnmodifiableEconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyWithSlowPathNode
            astore 8 /* slowPath */
        start local 8 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyWithSlowPathNode slowPath
        21: .line 552
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.$assertionsDisabled:Z
            ifne 22
            aload 2 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
            ifnonnull 22
            new java.lang.AssertionError
            dup
            aload 2 /* arraycopy */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        22: .line 553
      StackMap locals: org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyWithSlowPathNode
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.$assertionsDisabled:Z
            ifne 23
            aload 8 /* slowPath */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyWithSlowPathNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
            aload 2 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
            if_acmpeq 23
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        23: .line 554
      StackMap locals:
      StackMap stack:
            aload 8 /* slowPath */
            aload 2 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.getBci:()I
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyWithSlowPathNode.setBci:(I)V
        end local 8 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyWithSlowPathNode slowPath
        end local 6 // org.graalvm.compiler.graph.Node originalNode
        24: .line 532
      StackMap locals: org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates org.graalvm.compiler.replacements.SnippetTemplate$Arguments org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.replacements.SnippetTemplate jdk.internal.vm.compiler.collections.UnmodifiableEconomicMap top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        25: .line 557
            aload 2 /* arraycopy */
            invokestatic org.graalvm.compiler.nodes.util.GraphUtil.killCFG:(Lorg/graalvm/compiler/nodes/FixedNode;)V
        26: .line 558
            return
        end local 5 // jdk.internal.vm.compiler.collections.UnmodifiableEconomicMap replacements
        end local 4 // org.graalvm.compiler.replacements.SnippetTemplate template
        end local 3 // org.graalvm.compiler.nodes.StructuredGraph graph
        end local 2 // org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode arraycopy
        end local 1 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
        end local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   27     0          this  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Templates;
            0   27     1          args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            0   27     2     arraycopy  Lorg/graalvm/compiler/replacements/nodes/BasicArrayCopyNode;
            1   27     3         graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            2   27     4      template  Lorg/graalvm/compiler/replacements/SnippetTemplate;
            3   27     5  replacements  Ljdk/internal/vm/compiler/collections/UnmodifiableEconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;>;
            5   24     6  originalNode  Lorg/graalvm/compiler/graph/Node;
            7   18     8        invoke  Lorg/graalvm/compiler/nodes/Invoke;
            9   18     9          call  Lorg/graalvm/compiler/nodes/CallTargetNode;
           12   18    10     newInvoke  Lorg/graalvm/compiler/nodes/InvokeNode;
           21   24     8      slowPath  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopyWithSlowPathNode;
    MethodParameters:
           Name  Flags
      args       
      arraycopy  

  private jdk.vm.ci.meta.ResolvedJavaMethod originalArraycopy();
    descriptor: ()Ljdk/vm/ci/meta/ResolvedJavaMethod;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates this
         0: .line 561
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.originalArraycopy:Ljdk/vm/ci/meta/ResolvedJavaMethod;
            ifnonnull 6
         1: .line 564
            ldc Ljava/lang/System;
            ldc "arraycopy"
            iconst_5
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/Object;
            aastore
            dup
            iconst_1
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
            dup
            iconst_2
            ldc Ljava/lang/Object;
            aastore
            dup
            iconst_3
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
            dup
            iconst_4
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
            invokevirtual java.lang.Class.getDeclaredMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 1 /* method */
        start local 1 // java.lang.reflect.Method method
         2: .line 565
            goto 5
        end local 1 // java.lang.reflect.Method method
      StackMap locals:
      StackMap stack: java.lang.Exception
         3: astore 2 /* e */
        start local 2 // java.lang.Exception e
         4: .line 566
            new org.graalvm.compiler.debug.GraalError
            dup
            aload 2 /* e */
            invokespecial org.graalvm.compiler.debug.GraalError.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.Exception e
        start local 1 // java.lang.reflect.Method method
         5: .line 568
      StackMap locals: java.lang.reflect.Method
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.providers:Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.util.Providers.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 1 /* method */
            invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaMethod:(Ljava/lang/reflect/Executable;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
            putfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.originalArraycopy:Ljdk/vm/ci/meta/ResolvedJavaMethod;
        end local 1 // java.lang.reflect.Method method
         6: .line 570
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.originalArraycopy:Ljdk/vm/ci/meta/ResolvedJavaMethod;
            areturn
        end local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Templates;
            2    3     1  method  Ljava/lang/reflect/Method;
            5    6     1  method  Ljava/lang/reflect/Method;
            4    5     2       e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.NoSuchMethodException
           1     2       3  Class java.lang.SecurityException
    Exceptions:
      throws org.graalvm.compiler.debug.GraalError
}
SourceFile: "ArrayCopySnippets.java"
NestHost: org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets
InnerClasses:
  private final ArrayCopyTypeCheck = org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck of org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets
  Counters = org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters of org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets
  public Templates = org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates of org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets
  public final GuardsStage = org.graalvm.compiler.nodes.StructuredGraph$GuardsStage of org.graalvm.compiler.nodes.StructuredGraph
  public abstract LoweringStage = org.graalvm.compiler.nodes.spi.LoweringTool$LoweringStage of org.graalvm.compiler.nodes.spi.LoweringTool
  public Group = org.graalvm.compiler.replacements.SnippetCounter$Group of org.graalvm.compiler.replacements.SnippetCounter
  public abstract Factory = org.graalvm.compiler.replacements.SnippetCounter$Group$Factory of org.graalvm.compiler.replacements.SnippetCounter$Group
  public abstract AbstractTemplates = org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates of org.graalvm.compiler.replacements.SnippetTemplate
  public Arguments = org.graalvm.compiler.replacements.SnippetTemplate$Arguments of org.graalvm.compiler.replacements.SnippetTemplate
  public abstract SnippetInfo = org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo of org.graalvm.compiler.replacements.SnippetTemplate
  public abstract UsageReplacer = org.graalvm.compiler.replacements.SnippetTemplate$UsageReplacer of org.graalvm.compiler.replacements.SnippetTemplate