public class org.graalvm.compiler.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.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 arraycopyExactSnippet;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo arraycopyExactStubCallSnippet;
    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 final org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo exactArraycopyWithSlowPathWork;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean useOriginalArraycopy;
    descriptor: Z
    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.replacements.arraycopy.ArrayCopySnippets$Counters counters;
    descriptor: Lorg/graalvm/compiler/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 319
            ldc Lorg/graalvm/compiler/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.replacements.arraycopy.ArrayCopySnippets$Templates.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets, org.graalvm.compiler.options.OptionValues, java.lang.Iterable<org.graalvm.compiler.debug.DebugHandlersFactory>, org.graalvm.compiler.replacements.SnippetCounter$Group$Factory, org.graalvm.compiler.phases.util.Providers, org.graalvm.compiler.api.replacements.SnippetReflectionProvider, jdk.vm.ci.code.TargetDescription);
    descriptor: (Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;Lorg/graalvm/compiler/options/OptionValues;Ljava/lang/Iterable;Lorg/graalvm/compiler/replacements/SnippetCounter$Group$Factory;Lorg/graalvm/compiler/phases/util/Providers;Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;Ljdk/vm/ci/code/TargetDescription;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=8, args_size=8
        start local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates this
        start local 1 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets receiver
        start local 2 // org.graalvm.compiler.options.OptionValues options
        start local 3 // java.lang.Iterable factories
        start local 4 // org.graalvm.compiler.replacements.SnippetCounter$Group$Factory factory
        start local 5 // org.graalvm.compiler.phases.util.Providers providers
        start local 6 // org.graalvm.compiler.api.replacements.SnippetReflectionProvider snippetReflection
        start local 7 // jdk.vm.ci.code.TargetDescription target
         0: .line 335
            aload 0 /* this */
            aload 2 /* options */
            aload 3 /* factories */
            aload 5 /* providers */
            aload 6 /* snippetReflection */
            aload 7 /* 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 336
            aload 0 /* this */
            new org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters
            dup
            aload 4 /* factory */
            invokespecial org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group$Factory;)V
            putfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.counters:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;
         2: .line 338
            aload 0 /* this */
            aload 1 /* receiver */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.useOriginalArraycopy:()Z
            putfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.useOriginalArraycopy:Z
         3: .line 339
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* receiver */
            ldc "arraycopyGenericSnippet"
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.snippet:(Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;Ljava/lang/String;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyGenericSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         4: .line 340
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* receiver */
            ldc "arraycopyExactSnippet"
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.snippet:(Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;Ljava/lang/String;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyExactSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         5: .line 341
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* receiver */
            ldc "arraycopyExactStubCallSnippet"
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.snippet:(Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;Ljava/lang/String;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyExactStubCallSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         6: .line 342
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* receiver */
            ldc "arraycopyCheckcastSnippet"
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.snippet:(Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;Ljava/lang/String;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyCheckcastSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         7: .line 343
            aload 0 /* this */
            aload 0 /* this */
            aconst_null
            ldc "arraycopyNativeSnippet"
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.snippet:(Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;Ljava/lang/String;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyNativeSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         8: .line 344
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* receiver */
            ldc "checkcastArraycopyWithSlowPathWork"
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.snippet:(Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;Ljava/lang/String;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.checkcastArraycopyWithSlowPathWork:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         9: .line 345
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* receiver */
            ldc "genericArraycopyWithSlowPathWork"
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.snippet:(Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;Ljava/lang/String;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.genericArraycopyWithSlowPathWork:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
        10: .line 346
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* receiver */
            ldc "exactArraycopyWithSlowPathWork"
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.snippet:(Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;Ljava/lang/String;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.exactArraycopyWithSlowPathWork:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
        11: .line 347
            return
        end local 7 // jdk.vm.ci.code.TargetDescription target
        end local 6 // org.graalvm.compiler.api.replacements.SnippetReflectionProvider snippetReflection
        end local 5 // org.graalvm.compiler.phases.util.Providers providers
        end local 4 // org.graalvm.compiler.replacements.SnippetCounter$Group$Factory factory
        end local 3 // java.lang.Iterable factories
        end local 2 // org.graalvm.compiler.options.OptionValues options
        end local 1 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets receiver
        end local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   12     0               this  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Templates;
            0   12     1           receiver  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;
            0   12     2            options  Lorg/graalvm/compiler/options/OptionValues;
            0   12     3          factories  Ljava/lang/Iterable<Lorg/graalvm/compiler/debug/DebugHandlersFactory;>;
            0   12     4            factory  Lorg/graalvm/compiler/replacements/SnippetCounter$Group$Factory;
            0   12     5          providers  Lorg/graalvm/compiler/phases/util/Providers;
            0   12     6  snippetReflection  Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
            0   12     7             target  Ljdk/vm/ci/code/TargetDescription;
    Signature: (Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;Lorg/graalvm/compiler/options/OptionValues;Ljava/lang/Iterable<Lorg/graalvm/compiler/debug/DebugHandlersFactory;>;Lorg/graalvm/compiler/replacements/SnippetCounter$Group$Factory;Lorg/graalvm/compiler/phases/util/Providers;Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;Ljdk/vm/ci/code/TargetDescription;)V
    MethodParameters:
                   Name  Flags
      receiver           
      options            
      factories          
      factory            
      providers          
      snippetReflection  
      target             

  protected org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippet(org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets, java.lang.String);
    descriptor: (Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;Ljava/lang/String;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=9, locals=4, args_size=3
        start local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates this
        start local 1 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets receiver
        start local 2 // java.lang.String methodName
         0: .line 350
            aload 0 /* this */
            ldc Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;
            aload 2 /* methodName */
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.originalArraycopy:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
            aload 1 /* receiver */
            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.replacements.arraycopy.ArrayCopySnippets$Templates.snippet:(Ljava/lang/Class;Ljava/lang/String;Ljdk/vm/ci/meta/ResolvedJavaMethod;Ljava/lang/Object;[Ljdk/internal/vm/compiler/word/LocationIdentity;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 3 /* info */
        start local 3 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo info
         1: .line 351
            aload 3 /* info */
            areturn
        end local 3 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo info
        end local 2 // java.lang.String methodName
        end local 1 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets receiver
        end local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Templates;
            0    2     1    receiver  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;
            0    2     2  methodName  Ljava/lang/String;
            1    2     3        info  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    MethodParameters:
            Name  Flags
      receiver    
      methodName  

  public void lower(org.graalvm.compiler.replacements.arraycopy.ArrayCopyNode, org.graalvm.compiler.nodes.spi.LoweringTool);
    descriptor: (Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyNode;Lorg/graalvm/compiler/nodes/spi/LoweringTool;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates this
        start local 1 // org.graalvm.compiler.replacements.arraycopy.ArrayCopyNode arraycopy
        start local 2 // org.graalvm.compiler.nodes.spi.LoweringTool tool
         0: .line 355
            aload 0 /* this */
            aload 1 /* arraycopy */
            iconst_0
            aload 2 /* tool */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.lower:(Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyNode;ZLorg/graalvm/compiler/nodes/spi/LoweringTool;)V
         1: .line 356
            return
        end local 2 // org.graalvm.compiler.nodes.spi.LoweringTool tool
        end local 1 // org.graalvm.compiler.replacements.arraycopy.ArrayCopyNode arraycopy
        end local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Templates;
            0    2     1  arraycopy  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyNode;
            0    2     2       tool  Lorg/graalvm/compiler/nodes/spi/LoweringTool;
    MethodParameters:
           Name  Flags
      arraycopy  
      tool       

  public void lower(org.graalvm.compiler.replacements.arraycopy.ArrayCopyNode, boolean, org.graalvm.compiler.nodes.spi.LoweringTool);
    descriptor: (Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyNode;ZLorg/graalvm/compiler/nodes/spi/LoweringTool;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=12, args_size=4
        start local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates this
        start local 1 // org.graalvm.compiler.replacements.arraycopy.ArrayCopyNode arraycopy
        start local 2 // boolean mayExpandThisArraycopy
        start local 3 // org.graalvm.compiler.nodes.spi.LoweringTool tool
         0: .line 359
            aload 1 /* arraycopy */
            invokestatic org.graalvm.compiler.replacements.arraycopy.ArrayCopy.selectComponentKind:(Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopy;)Ljdk/vm/ci/meta/JavaKind;
            astore 4 /* elementKind */
        start local 4 // jdk.vm.ci.meta.JavaKind elementKind
         1: .line 363
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.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 7 /* srcType */
        start local 7 // jdk.vm.ci.meta.ResolvedJavaType srcType
         2: .line 364
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.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 8 /* destType */
        start local 8 // jdk.vm.ci.meta.ResolvedJavaType destType
         3: .line 365
            aload 7 /* srcType */
            invokestatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.canBeArray:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
            ifeq 4
            aload 8 /* destType */
            invokestatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.canBeArray:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
            ifne 7
         4: .line 368
      StackMap locals: org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates org.graalvm.compiler.replacements.arraycopy.ArrayCopyNode int 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.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyNativeSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 5 /* snippetInfo */
        start local 5 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
         5: .line 369
            getstatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.UNDEFINED_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            astore 6 /* arrayTypeCheck */
        start local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
         6: .line 370
            goto 44
        end local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        end local 5 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
         7: .line 371
      StackMap locals:
      StackMap stack:
            aload 7 /* srcType */
            ifnonnull 8
            aconst_null
            goto 9
      StackMap locals:
      StackMap stack:
         8: aload 7 /* srcType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.getComponentType:()Ljdk/vm/ci/meta/ResolvedJavaType;
      StackMap locals:
      StackMap stack: jdk.vm.ci.meta.ResolvedJavaType
         9: astore 9 /* srcComponentType */
        start local 9 // jdk.vm.ci.meta.ResolvedJavaType srcComponentType
        10: .line 372
            aload 8 /* destType */
            ifnonnull 11
            aconst_null
            goto 12
      StackMap locals: jdk.vm.ci.meta.ResolvedJavaType
      StackMap stack:
        11: aload 8 /* destType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.getComponentType:()Ljdk/vm/ci/meta/ResolvedJavaType;
      StackMap locals:
      StackMap stack: jdk.vm.ci.meta.ResolvedJavaType
        12: astore 10 /* destComponentType */
        start local 10 // jdk.vm.ci.meta.ResolvedJavaType destComponentType
        13: .line 374
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopyNode.isExact:()Z
            ifeq 17
        14: .line 376
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyExactStubCallSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 5 /* snippetInfo */
        start local 5 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        15: .line 377
            getstatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.NO_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            astore 6 /* arrayTypeCheck */
        start local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        16: .line 378
            goto 44
        end local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        end local 5 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
      StackMap locals: jdk.vm.ci.meta.ResolvedJavaType
      StackMap stack:
        17: aload 9 /* srcComponentType */
            ifnonnull 21
            aload 10 /* destComponentType */
            ifnonnull 21
        18: .line 380
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyGenericSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 5 /* snippetInfo */
        start local 5 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        19: .line 382
            getstatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.NO_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            astore 6 /* arrayTypeCheck */
        start local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        20: .line 383
            goto 44
        end local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        end local 5 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
      StackMap locals:
      StackMap stack:
        21: getstatic org.graalvm.compiler.core.common.GraalOptions.GeneratePIC:Lorg/graalvm/compiler/options/OptionKey;
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.options:Lorg/graalvm/compiler/options/OptionValues;
            invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 25
        22: .line 385
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyGenericSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 5 /* snippetInfo */
        start local 5 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        23: .line 386
            getstatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.NO_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            astore 6 /* arrayTypeCheck */
        start local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        24: .line 387
            goto 44
        end local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        end local 5 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
      StackMap locals:
      StackMap stack:
        25: aload 9 /* srcComponentType */
            ifnull 34
            aload 10 /* destComponentType */
            ifnull 34
        26: .line 388
            aload 9 /* srcComponentType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isPrimitive:()Z
            ifne 30
            aload 10 /* destComponentType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isPrimitive:()Z
            ifne 30
        27: .line 391
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyCheckcastSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 5 /* snippetInfo */
        start local 5 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        28: .line 392
            getstatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.NO_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            astore 6 /* arrayTypeCheck */
        start local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        29: .line 393
            goto 44
        end local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        end local 5 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        30: .line 396
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.$assertionsDisabled:Z
            ifne 31
            aload 9 /* srcComponentType */
            aload 10 /* destComponentType */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 31
            new java.lang.AssertionError
            dup
            ldc "must be handled by arraycopy.isExact()"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        31: .line 397
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyNativeSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 5 /* snippetInfo */
        start local 5 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        32: .line 398
            getstatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.UNDEFINED_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            astore 6 /* arrayTypeCheck */
        start local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        33: .line 400
            goto 44
        end local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        end local 5 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        34: .line 401
      StackMap locals:
      StackMap stack:
            aload 9 /* srcComponentType */
            ifnull 35
            aload 9 /* srcComponentType */
            goto 36
      StackMap locals:
      StackMap stack:
        35: aload 10 /* destComponentType */
      StackMap locals:
      StackMap stack: jdk.vm.ci.meta.ResolvedJavaType
        36: astore 11 /* nonNullComponentType */
        start local 11 // jdk.vm.ci.meta.ResolvedJavaType nonNullComponentType
        37: .line 402
            aload 11 /* nonNullComponentType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isPrimitive:()Z
            ifeq 42
        38: .line 405
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyExactStubCallSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 5 /* snippetInfo */
        start local 5 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        39: .line 406
            getstatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.HUB_BASED_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            astore 6 /* arrayTypeCheck */
        start local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        40: .line 407
            aload 11 /* nonNullComponentType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.getJavaKind:()Ljdk/vm/ci/meta/JavaKind;
            astore 4 /* elementKind */
        41: .line 408
            goto 44
        end local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        end local 5 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        42: .line 411
      StackMap locals: jdk.vm.ci.meta.ResolvedJavaType
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyCheckcastSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 5 /* snippetInfo */
        start local 5 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        43: .line 412
            getstatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.LAYOUT_HELPER_BASED_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            astore 6 /* arrayTypeCheck */
        end local 11 // jdk.vm.ci.meta.ResolvedJavaType nonNullComponentType
        end local 10 // jdk.vm.ci.meta.ResolvedJavaType destComponentType
        end local 9 // jdk.vm.ci.meta.ResolvedJavaType srcComponentType
        start local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        44: .line 417
      StackMap locals: org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates org.graalvm.compiler.replacements.arraycopy.ArrayCopyNode int org.graalvm.compiler.nodes.spi.LoweringTool jdk.vm.ci.meta.JavaKind org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck jdk.vm.ci.meta.ResolvedJavaType jdk.vm.ci.meta.ResolvedJavaType
      StackMap stack:
            iload 2 /* mayExpandThisArraycopy */
            ifeq 46
            aload 5 /* snippetInfo */
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyExactStubCallSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpne 46
        45: .line 418
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyExactSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 5 /* snippetInfo */
        46: .line 422
      StackMap locals:
      StackMap stack:
            new org.graalvm.compiler.replacements.SnippetTemplate$Arguments
            dup
            aload 5 /* snippetInfo */
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopyNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
            aload 3 /* 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 9 /* args */
        start local 9 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
        47: .line 423
            aload 9 /* args */
            ldc "src"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.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
        48: .line 424
            aload 9 /* args */
            ldc "srcPos"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.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
        49: .line 425
            aload 9 /* args */
            ldc "dest"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.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
        50: .line 426
            aload 9 /* args */
            ldc "destPos"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.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
        51: .line 427
            aload 9 /* args */
            ldc "length"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.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
        52: .line 428
            aload 5 /* snippetInfo */
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyNativeSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpeq 55
        53: .line 429
            getstatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.$assertionsDisabled:Z
            ifne 54
            aload 6 /* arrayTypeCheck */
            getstatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.UNDEFINED_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            if_acmpne 54
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        54: .line 430
      StackMap locals: org.graalvm.compiler.replacements.SnippetTemplate$Arguments
      StackMap stack:
            aload 9 /* args */
            ldc "arrayTypeCheck"
            aload 6 /* arrayTypeCheck */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        55: .line 432
      StackMap locals:
      StackMap stack:
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopyNode.killsAnyLocation:()Z
            ifeq 56
            invokestatic jdk.internal.vm.compiler.word.LocationIdentity.any:()Ljdk/internal/vm/compiler/word/LocationIdentity;
            goto 57
      StackMap locals:
      StackMap stack:
        56: aload 4 /* elementKind */
            invokestatic org.graalvm.compiler.nodes.NamedLocationIdentity.getArrayLocation:(Ljdk/vm/ci/meta/JavaKind;)Ljdk/internal/vm/compiler/word/LocationIdentity;
      StackMap locals:
      StackMap stack: jdk.internal.vm.compiler.word.LocationIdentity
        57: astore 10 /* locationIdentity */
        start local 10 // java.lang.Object locationIdentity
        58: .line 433
            aload 5 /* snippetInfo */
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyExactStubCallSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpeq 59
            aload 5 /* snippetInfo */
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyExactSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpne 65
        59: .line 434
      StackMap locals: java.lang.Object
      StackMap stack:
            getstatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.$assertionsDisabled:Z
            ifne 60
            aload 4 /* elementKind */
            ifnonnull 60
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        60: .line 435
      StackMap locals:
      StackMap stack:
            aload 9 /* args */
            ldc "workSnippet"
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.exactArraycopyWithSlowPathWork: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
        61: .line 436
            aload 9 /* args */
            ldc "elementKind"
            aload 4 /* elementKind */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        62: .line 437
            aload 9 /* args */
            ldc "locationIdentity"
            aload 10 /* locationIdentity */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        63: .line 438
            aload 9 /* args */
            ldc "elementKindCounter"
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.counters:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters.arraycopyCallCounters:Ljava/util/EnumMap;
            aload 4 /* 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 439
            aload 9 /* args */
            ldc "elementKindCopiedCounter"
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.counters:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters.arraycopyCallCopiedCounters:Ljava/util/EnumMap;
            aload 4 /* 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
        65: .line 441
      StackMap locals:
      StackMap stack:
            aload 9 /* args */
            ldc "counters"
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.counters:Lorg/graalvm/compiler/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
        66: .line 442
            aload 5 /* snippetInfo */
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyCheckcastSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpne 69
        67: .line 443
            aload 9 /* args */
            ldc "workSnippet"
            aload 0 /* this */
            getfield org.graalvm.compiler.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
        68: .line 444
            aload 9 /* 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
        69: .line 446
      StackMap locals:
      StackMap stack:
            aload 5 /* snippetInfo */
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyGenericSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpne 72
        70: .line 447
            aload 9 /* args */
            ldc "workSnippet"
            aload 0 /* this */
            getfield org.graalvm.compiler.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
        71: .line 448
            aload 9 /* 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
        72: .line 451
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 9 /* args */
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.instantiate:(Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;Lorg/graalvm/compiler/replacements/nodes/BasicArrayCopyNode;)V
        73: .line 452
            return
        end local 10 // java.lang.Object locationIdentity
        end local 9 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
        end local 8 // jdk.vm.ci.meta.ResolvedJavaType destType
        end local 7 // jdk.vm.ci.meta.ResolvedJavaType srcType
        end local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        end local 5 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        end local 4 // jdk.vm.ci.meta.JavaKind elementKind
        end local 3 // org.graalvm.compiler.nodes.spi.LoweringTool tool
        end local 2 // boolean mayExpandThisArraycopy
        end local 1 // org.graalvm.compiler.replacements.arraycopy.ArrayCopyNode arraycopy
        end local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   74     0                    this  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Templates;
            0   74     1               arraycopy  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyNode;
            0   74     2  mayExpandThisArraycopy  Z
            0   74     3                    tool  Lorg/graalvm/compiler/nodes/spi/LoweringTool;
            1   74     4             elementKind  Ljdk/vm/ci/meta/JavaKind;
            5    7     5             snippetInfo  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
           15   17     5             snippetInfo  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
           19   21     5             snippetInfo  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
           23   25     5             snippetInfo  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
           28   30     5             snippetInfo  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
           32   34     5             snippetInfo  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
           39   42     5             snippetInfo  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
           43   74     5             snippetInfo  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            6    7     6          arrayTypeCheck  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
           16   17     6          arrayTypeCheck  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
           20   21     6          arrayTypeCheck  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
           24   25     6          arrayTypeCheck  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
           29   30     6          arrayTypeCheck  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
           33   34     6          arrayTypeCheck  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
           40   42     6          arrayTypeCheck  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
           44   74     6          arrayTypeCheck  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            2   74     7                 srcType  Ljdk/vm/ci/meta/ResolvedJavaType;
            3   74     8                destType  Ljdk/vm/ci/meta/ResolvedJavaType;
           10   44     9        srcComponentType  Ljdk/vm/ci/meta/ResolvedJavaType;
           13   44    10       destComponentType  Ljdk/vm/ci/meta/ResolvedJavaType;
           37   44    11    nonNullComponentType  Ljdk/vm/ci/meta/ResolvedJavaType;
           47   74     9                    args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
           58   74    10        locationIdentity  Ljava/lang/Object;
    MethodParameters:
                        Name  Flags
      arraycopy               
      mayExpandThisArraycopy  
      tool                    

  public void lower(org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode, org.graalvm.compiler.nodes.spi.LoweringTool);
    descriptor: (Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyWithDelayedLoweringNode;Lorg/graalvm/compiler/nodes/spi/LoweringTool;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates this
        start local 1 // org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode arraycopy
        start local 2 // org.graalvm.compiler.nodes.spi.LoweringTool tool
         0: .line 455
            aload 0 /* this */
            aload 1 /* arraycopy */
            iconst_0
            aload 2 /* tool */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.lower:(Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyWithDelayedLoweringNode;ZLorg/graalvm/compiler/nodes/spi/LoweringTool;)V
         1: .line 456
            return
        end local 2 // org.graalvm.compiler.nodes.spi.LoweringTool tool
        end local 1 // org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode arraycopy
        end local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Templates;
            0    2     1  arraycopy  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyWithDelayedLoweringNode;
            0    2     2       tool  Lorg/graalvm/compiler/nodes/spi/LoweringTool;
    MethodParameters:
           Name  Flags
      arraycopy  
      tool       

  public void lower(org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode, boolean, org.graalvm.compiler.nodes.spi.LoweringTool);
    descriptor: (Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyWithDelayedLoweringNode;ZLorg/graalvm/compiler/nodes/spi/LoweringTool;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=9, args_size=4
        start local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates this
        start local 1 // org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode arraycopy
        start local 2 // boolean mayExpandArraycopyLoops
        start local 3 // org.graalvm.compiler.nodes.spi.LoweringTool tool
         0: .line 459
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            astore 4 /* graph */
        start local 4 // org.graalvm.compiler.nodes.StructuredGraph graph
         1: .line 461
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode.getSnippet:()Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.exactArraycopyWithSlowPathWork:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpne 4
            iload 2 /* mayExpandArraycopyLoops */
            ifeq 4
         2: .line 462
            aload 4 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph$GuardsStage.areDeoptsFixed:()Z
            ifne 6
         3: .line 464
            return
         4: .line 467
      StackMap locals: org.graalvm.compiler.nodes.StructuredGraph
      StackMap stack:
            aload 4 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph$GuardsStage.areFrameStatesAtDeopts:()Z
            ifne 6
         5: .line 469
            return
         6: .line 473
      StackMap locals:
      StackMap stack:
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode.getSnippet:()Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 5 /* snippetInfo */
        start local 5 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
         7: .line 474
            new org.graalvm.compiler.replacements.SnippetTemplate$Arguments
            dup
            aload 5 /* snippetInfo */
            aload 4 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
            aload 3 /* 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 6 /* args */
        start local 6 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
         8: .line 475
            aload 6 /* args */
            ldc "src"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode.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
         9: .line 476
            aload 6 /* args */
            ldc "srcPos"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode.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
        10: .line 477
            aload 6 /* args */
            ldc "dest"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode.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
        11: .line 478
            aload 6 /* args */
            ldc "destPos"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode.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
        12: .line 479
            aload 6 /* args */
            ldc "length"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode.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
        13: .line 481
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode.getElementKind:()Ljdk/vm/ci/meta/JavaKind;
            astore 7 /* elementKind */
        start local 7 // jdk.vm.ci.meta.JavaKind elementKind
        14: .line 482
            aload 6 /* args */
            ldc "elementKind"
            aload 7 /* elementKind */
            ifnonnull 15
            getstatic jdk.vm.ci.meta.JavaKind.Illegal:Ljdk/vm/ci/meta/JavaKind;
            goto 16
      StackMap locals: org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode int org.graalvm.compiler.nodes.spi.LoweringTool org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo org.graalvm.compiler.replacements.SnippetTemplate$Arguments jdk.vm.ci.meta.JavaKind
      StackMap stack: org.graalvm.compiler.replacements.SnippetTemplate$Arguments java.lang.String
        15: aload 7 /* elementKind */
      StackMap locals: org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode int org.graalvm.compiler.nodes.spi.LoweringTool org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo org.graalvm.compiler.replacements.SnippetTemplate$Arguments jdk.vm.ci.meta.JavaKind
      StackMap stack: org.graalvm.compiler.replacements.SnippetTemplate$Arguments java.lang.String jdk.vm.ci.meta.JavaKind
        16: invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        17: .line 484
            aload 7 /* elementKind */
            ifnonnull 18
            invokestatic jdk.internal.vm.compiler.word.LocationIdentity.any:()Ljdk/internal/vm/compiler/word/LocationIdentity;
            goto 19
      StackMap locals:
      StackMap stack:
        18: aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode.getElementKind:()Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.nodes.NamedLocationIdentity.getArrayLocation:(Ljdk/vm/ci/meta/JavaKind;)Ljdk/internal/vm/compiler/word/LocationIdentity;
      StackMap locals:
      StackMap stack: jdk.internal.vm.compiler.word.LocationIdentity
        19: astore 8 /* locationIdentity */
        start local 8 // java.lang.Object locationIdentity
        20: .line 485
            aload 6 /* args */
            ldc "arrayLocation"
            aload 8 /* locationIdentity */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        21: .line 486
            aload 6 /* args */
            ldc "counters"
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.counters:Lorg/graalvm/compiler/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
        22: .line 487
            aload 0 /* this */
            aload 6 /* args */
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.instantiate:(Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;Lorg/graalvm/compiler/replacements/nodes/BasicArrayCopyNode;)V
        23: .line 488
            return
        end local 8 // java.lang.Object locationIdentity
        end local 7 // jdk.vm.ci.meta.JavaKind elementKind
        end local 6 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
        end local 5 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        end local 4 // org.graalvm.compiler.nodes.StructuredGraph graph
        end local 3 // org.graalvm.compiler.nodes.spi.LoweringTool tool
        end local 2 // boolean mayExpandArraycopyLoops
        end local 1 // org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode arraycopy
        end local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   24     0                     this  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Templates;
            0   24     1                arraycopy  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyWithDelayedLoweringNode;
            0   24     2  mayExpandArraycopyLoops  Z
            0   24     3                     tool  Lorg/graalvm/compiler/nodes/spi/LoweringTool;
            1   24     4                    graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            7   24     5              snippetInfo  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            8   24     6                     args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
           14   24     7              elementKind  Ljdk/vm/ci/meta/JavaKind;
           20   24     8         locationIdentity  Ljava/lang/Object;
    MethodParameters:
                         Name  Flags
      arraycopy                
      mayExpandArraycopyLoops  
      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 491
            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  

  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=10, args_size=3
        start local 0 // org.graalvm.compiler.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 502
            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 503
            aload 0 /* this */
            aload 2 /* arraycopy */
            aload 1 /* args */
            invokevirtual org.graalvm.compiler.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 504
            aload 4 /* template */
            aload 0 /* this */
            getfield org.graalvm.compiler.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 505
            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 28
      StackMap locals: org.graalvm.compiler.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 506
            aload 6 /* originalNode */
            instanceof org.graalvm.compiler.nodes.InvokeNode
            ifeq 20
         6: .line 507
            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.InvokeNode
            astore 8 /* invoke */
        start local 8 // org.graalvm.compiler.nodes.InvokeNode invoke
         7: .line 508
            getstatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.$assertionsDisabled:Z
            ifne 8
            aload 8 /* invoke */
            invokevirtual org.graalvm.compiler.nodes.InvokeNode.asNode:()Lorg/graalvm/compiler/nodes/FixedWithNextNode;
            invokevirtual org.graalvm.compiler.nodes.FixedWithNextNode.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 509
      StackMap locals: org.graalvm.compiler.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.InvokeNode
      StackMap stack:
            aload 8 /* invoke */
            invokevirtual org.graalvm.compiler.nodes.InvokeNode.callTarget:()Lorg/graalvm/compiler/nodes/CallTargetNode;
            astore 9 /* call */
        start local 9 // org.graalvm.compiler.nodes.CallTargetNode call
         9: .line 511
            aload 9 /* call */
            invokevirtual org.graalvm.compiler.nodes.CallTargetNode.targetMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.originalArraycopy:Ljdk/vm/ci/meta/ResolvedJavaMethod;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifne 11
        10: .line 512
            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 515
      StackMap locals: org.graalvm.compiler.nodes.CallTargetNode
      StackMap stack:
            aload 8 /* invoke */
            aload 2 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.getBci:()I
            invokevirtual org.graalvm.compiler.nodes.InvokeNode.setBci:(I)V
        12: .line 516
            aload 8 /* invoke */
            aconst_null
            invokevirtual org.graalvm.compiler.nodes.InvokeNode.setStateDuring:(Lorg/graalvm/compiler/nodes/FrameState;)V
        13: .line 517
            aload 8 /* invoke */
            aconst_null
            invokevirtual org.graalvm.compiler.nodes.InvokeNode.setStateAfter:(Lorg/graalvm/compiler/nodes/FrameState;)V
        14: .line 518
            aload 2 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.stateDuring:()Lorg/graalvm/compiler/nodes/FrameState;
            ifnull 17
        15: .line 519
            aload 8 /* invoke */
            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
        16: .line 520
            goto 28
        17: .line 521
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.$assertionsDisabled:Z
            ifne 18
            aload 2 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
            ifnonnull 18
            new java.lang.AssertionError
            dup
            aload 2 /* arraycopy */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        18: .line 522
      StackMap locals:
      StackMap stack:
            aload 8 /* invoke */
            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
        end local 9 // org.graalvm.compiler.nodes.CallTargetNode call
        end local 8 // org.graalvm.compiler.nodes.InvokeNode invoke
        19: .line 524
            goto 28
      StackMap locals:
      StackMap stack:
        20: aload 6 /* originalNode */
            instanceof org.graalvm.compiler.nodes.InvokeWithExceptionNode
            ifeq 22
        21: .line 525
            new org.graalvm.compiler.debug.GraalError
            dup
            ldc "unexpected invoke with exception %s in snippet"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 6 /* originalNode */
            aastore
            invokespecial org.graalvm.compiler.debug.GraalError.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
            athrow
        22: .line 526
      StackMap locals:
      StackMap stack:
            aload 6 /* originalNode */
            instanceof org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode
            ifeq 28
        23: .line 527
            aload 5 /* replacements */
            aload 6 /* originalNode */
            invokeinterface jdk.internal.vm.compiler.collections.UnmodifiableEconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode
            astore 8 /* slowPath */
        start local 8 // org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode slowPath
        24: .line 528
            getstatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.$assertionsDisabled:Z
            ifne 25
            aload 2 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
            ifnonnull 25
            new java.lang.AssertionError
            dup
            aload 2 /* arraycopy */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        25: .line 529
      StackMap locals: org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode
      StackMap stack:
            getstatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.$assertionsDisabled:Z
            ifne 27
            aload 8 /* slowPath */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
            aload 2 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
            if_acmpeq 27
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "States do not match for slowpath="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 8 /* slowPath */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " and array copy="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* arraycopy */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " slowPathState="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        26: .line 530
            aload 8 /* slowPath */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " and arraycopyState="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        27: .line 531
      StackMap locals:
      StackMap stack:
            aload 8 /* slowPath */
            aload 2 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.getBci:()I
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode.setBci:(I)V
        end local 8 // org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode slowPath
        end local 6 // org.graalvm.compiler.graph.Node originalNode
        28: .line 505
      StackMap locals: org.graalvm.compiler.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
        29: .line 534
            aload 2 /* arraycopy */
            invokestatic org.graalvm.compiler.nodes.util.GraphUtil.killCFG:(Lorg/graalvm/compiler/nodes/FixedNode;)V
        30: .line 535
            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.replacements.arraycopy.ArrayCopySnippets$Templates this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   31     0          this  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Templates;
            0   31     1          args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            0   31     2     arraycopy  Lorg/graalvm/compiler/replacements/nodes/BasicArrayCopyNode;
            1   31     3         graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            2   31     4      template  Lorg/graalvm/compiler/replacements/SnippetTemplate;
            3   31     5  replacements  Ljdk/internal/vm/compiler/collections/UnmodifiableEconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;>;
            5   28     6  originalNode  Lorg/graalvm/compiler/graph/Node;
            7   19     8        invoke  Lorg/graalvm/compiler/nodes/InvokeNode;
            9   19     9          call  Lorg/graalvm/compiler/nodes/CallTargetNode;
           24   28     8      slowPath  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyWithDelayedLoweringNode;
    MethodParameters:
           Name  Flags
      args       
      arraycopy  

  private jdk.vm.ci.meta.ResolvedJavaMethod originalArraycopy();
    descriptor: ()Ljdk/vm/ci/meta/ResolvedJavaMethod;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates this
         0: .line 538
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.useOriginalArraycopy:Z
            ifne 2
         1: .line 539
            aconst_null
            areturn
         2: .line 541
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.originalArraycopy:Ljdk/vm/ci/meta/ResolvedJavaMethod;
            ifnonnull 7
         3: .line 543
            aload 0 /* this */
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.providers:Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.util.Providers.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            ldc Ljava/lang/System;
            ldc "arraycopy"
            invokestatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.findMethod:(Ljdk/vm/ci/meta/MetaAccessProvider;Ljava/lang/Class;Ljava/lang/String;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
            putfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.originalArraycopy:Ljdk/vm/ci/meta/ResolvedJavaMethod;
         4: .line 544
            goto 7
      StackMap locals:
      StackMap stack: java.lang.SecurityException
         5: astore 1 /* e */
        start local 1 // java.lang.SecurityException e
         6: .line 545
            new org.graalvm.compiler.debug.GraalError
            dup
            aload 1 /* e */
            invokespecial org.graalvm.compiler.debug.GraalError.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.SecurityException e
         7: .line 548
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates.originalArraycopy:Ljdk/vm/ci/meta/ResolvedJavaMethod;
            areturn
        end local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Templates;
            6    7     1     e  Ljava/lang/SecurityException;
      Exception table:
        from    to  target  type
           3     4       5  Class java.lang.SecurityException
    Exceptions:
      throws org.graalvm.compiler.debug.GraalError
}
SourceFile: "ArrayCopySnippets.java"
NestHost: org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets
InnerClasses:
  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
  private final ArrayCopyTypeCheck = org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck of org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets
  protected Counters = org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters of org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets
  public Templates = org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates of org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets