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 jdk.vm.ci.meta.ResolvedJavaMethod originalArraycopy;
    descriptor: Ljdk/vm/ci/meta/ResolvedJavaMethod;
    flags: (0x0002) ACC_PRIVATE

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

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

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

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

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

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

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

  private final org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo arraycopyUnrolledWorkSnippet;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    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 384
            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.hotspot.meta.HotSpotProviders, jdk.vm.ci.code.TargetDescription);
    descriptor: (Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;Ljdk/vm/ci/code/TargetDescription;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates this
        start local 1 // org.graalvm.compiler.hotspot.meta.HotSpotProviders providers
        start local 2 // jdk.vm.ci.code.TargetDescription target
         0: .line 387
            aload 0 /* this */
            aload 1 /* providers */
            aload 1 /* providers */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getSnippetReflection:()Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
            aload 2 /* target */
            invokespecial org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates.<init>:(Lorg/graalvm/compiler/phases/util/Providers;Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;Ljdk/vm/ci/code/TargetDescription;)V
         1: .line 405
            aload 0 /* this */
            aload 0 /* this */
            ldc "checkcastArraycopyWork"
            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.checkcastArraycopyWorkSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         2: .line 406
            aload 0 /* this */
            aload 0 /* this */
            ldc "arraycopyGeneric"
            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;
         3: .line 408
            aload 0 /* this */
            aload 0 /* this */
            ldc "arraycopySlowPathIntrinsic"
            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.arraycopySlowPathIntrinsicSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         4: .line 409
            aload 0 /* this */
            aload 0 /* this */
            ldc "arraycopyUnrolledIntrinsic"
            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.arraycopyUnrolledIntrinsicSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         5: .line 410
            aload 0 /* this */
            aload 0 /* this */
            ldc "arraycopyExactIntrinsic"
            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.arraycopyExactIntrinsicSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         6: .line 411
            aload 0 /* this */
            aload 0 /* this */
            ldc "arraycopyZeroLengthIntrinsic"
            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.arraycopyZeroLengthIntrinsicSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         7: .line 412
            aload 0 /* this */
            aload 0 /* this */
            ldc "arraycopyPredictedExactIntrinsic"
            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.arraycopyPredictedExactIntrinsicSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         8: .line 413
            aload 0 /* this */
            aload 0 /* this */
            ldc "arraycopyPredictedObjectWork"
            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.arraycopyPredictedObjectWorkSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         9: .line 415
            aload 0 /* this */
            aload 0 /* this */
            ldc "arraycopyUnrolledWork"
            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.arraycopyUnrolledWorkSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
        10: .line 388
            return
        end local 2 // jdk.vm.ci.code.TargetDescription target
        end local 1 // org.graalvm.compiler.hotspot.meta.HotSpotProviders providers
        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  providers  Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;
            0   11     2     target  Ljdk/vm/ci/code/TargetDescription;
    MethodParameters:
           Name  Flags
      providers  
      target     

  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 391
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.originalArraycopy:Ljdk/vm/ci/meta/ResolvedJavaMethod;
            ifnonnull 6
         1: .line 394
            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 395
            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 396
            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 398
      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 400
      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

  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 418
            aload 0 /* this */
            ldc Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets;
            aload 1 /* methodName */
            iconst_1
            anewarray org.graalvm.compiler.core.common.LocationIdentity
            dup
            iconst_0
            invokestatic org.graalvm.compiler.core.common.LocationIdentity.any:()Lorg/graalvm/compiler/core/common/LocationIdentity;
            aastore
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.snippet:(Ljava/lang/Class;Ljava/lang/String;[Lorg/graalvm/compiler/core/common/LocationIdentity;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 2 /* info */
        start local 2 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo info
         1: .line 419
            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 420
            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 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=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode arraycopy
         0: .line 424
            aload 0 /* arraycopy */
            iconst_1
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.selectComponentKind:(Lorg/graalvm/compiler/replacements/nodes/BasicArrayCopyNode;Z)Ljdk/vm/ci/meta/JavaKind;
            areturn
        end local 0 // org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode arraycopy
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0  arraycopy  Lorg/graalvm/compiler/replacements/nodes/BasicArrayCopyNode;
    MethodParameters:
           Name  Flags
      arraycopy  

  public static jdk.vm.ci.meta.JavaKind selectComponentKind(org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode, boolean);
    descriptor: (Lorg/graalvm/compiler/replacements/nodes/BasicArrayCopyNode;Z)Ljdk/vm/ci/meta/JavaKind;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode arraycopy
        start local 1 // boolean exact
         0: .line 428
            aload 0 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.getSource:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:()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 /* srcType */
        start local 2 // jdk.vm.ci.meta.ResolvedJavaType srcType
         1: .line 429
            aload 0 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.getDestination:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:()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 3 /* destType */
        start local 3 // jdk.vm.ci.meta.ResolvedJavaType destType
         2: .line 431
            aload 2 /* srcType */
            ifnull 3
            aload 2 /* srcType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isArray:()Z
            ifeq 3
            aload 3 /* destType */
            ifnull 3
            aload 3 /* destType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isArray:()Z
            ifne 9
         3: .line 432
      StackMap locals: jdk.vm.ci.meta.ResolvedJavaType jdk.vm.ci.meta.ResolvedJavaType
      StackMap stack:
            iload 1 /* exact */
            ifne 8
         4: .line 433
            aload 2 /* srcType */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.getComponentKind:(Ljdk/vm/ci/meta/ResolvedJavaType;)Ljdk/vm/ci/meta/JavaKind;
            astore 4 /* component */
        start local 4 // jdk.vm.ci.meta.JavaKind component
         5: .line 434
            aload 4 /* component */
            ifnull 7
         6: .line 435
            aload 4 /* component */
            areturn
         7: .line 437
      StackMap locals: jdk.vm.ci.meta.JavaKind
      StackMap stack:
            aload 3 /* destType */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.getComponentKind:(Ljdk/vm/ci/meta/ResolvedJavaType;)Ljdk/vm/ci/meta/JavaKind;
            areturn
        end local 4 // jdk.vm.ci.meta.JavaKind component
         8: .line 439
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         9: .line 441
      StackMap locals:
      StackMap stack:
            iload 1 /* exact */
            ifeq 14
        10: .line 442
            aload 3 /* destType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.getComponentType:()Ljdk/vm/ci/meta/ResolvedJavaType;
            aload 2 /* 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 12
        11: .line 443
            aconst_null
            areturn
        12: .line 445
      StackMap locals:
      StackMap stack:
            aload 0 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.isExact:()Z
            ifne 14
        13: .line 446
            aconst_null
            areturn
        14: .line 449
      StackMap locals:
      StackMap stack:
            aload 2 /* 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 3 // jdk.vm.ci.meta.ResolvedJavaType destType
        end local 2 // jdk.vm.ci.meta.ResolvedJavaType srcType
        end local 1 // boolean exact
        end local 0 // org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode arraycopy
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   15     0  arraycopy  Lorg/graalvm/compiler/replacements/nodes/BasicArrayCopyNode;
            0   15     1      exact  Z
            1   15     2    srcType  Ljdk/vm/ci/meta/ResolvedJavaType;
            2   15     3   destType  Ljdk/vm/ci/meta/ResolvedJavaType;
            5    8     4  component  Ljdk/vm/ci/meta/JavaKind;
    MethodParameters:
           Name  Flags
      arraycopy  
      exact      

  private static jdk.vm.ci.meta.JavaKind getComponentKind(jdk.vm.ci.meta.ResolvedJavaType);
    descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;)Ljdk/vm/ci/meta/JavaKind;
    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 453
            aload 0 /* type */
            ifnull 2
            aload 0 /* type */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isArray:()Z
            ifeq 2
         1: .line 454
            aload 0 /* type */
            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
         2: .line 456
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // jdk.vm.ci.meta.ResolvedJavaType type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  type  Ljdk/vm/ci/meta/ResolvedJavaType;
    MethodParameters:
      Name  Flags
      type  

  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 460
            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  

  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 464
            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 /* componentKind */
        start local 3 // jdk.vm.ci.meta.JavaKind componentKind
         1: .line 465
            aconst_null
            astore 4 /* snippetInfo */
        start local 4 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
         2: .line 466
            aconst_null
            astore 5 /* slowPathSnippetInfo */
        start local 5 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo slowPathSnippetInfo
         3: .line 467
            aconst_null
            astore 6 /* slowPathArgument */
        start local 6 // java.lang.Object slowPathArgument
         4: .line 469
            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 7
            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 7
         5: .line 470
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyZeroLengthIntrinsicSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 4 /* snippetInfo */
         6: .line 471
            goto 39
      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.replacements.SnippetTemplate$SnippetInfo java.lang.Object
      StackMap stack:
         7: aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode.isExact:()Z
            ifeq 12
         8: .line 472
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyExactIntrinsicSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 4 /* snippetInfo */
         9: .line 473
            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 39
        10: .line 474
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyUnrolledIntrinsicSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 4 /* snippetInfo */
        11: .line 476
            goto 39
        12: .line 477
      StackMap locals:
      StackMap stack:
            aload 3 /* componentKind */
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            if_acmpne 26
        13: .line 478
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode.getSource:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:()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
        14: .line 479
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode.getDestination:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:()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
        15: .line 480
            aload 7 /* srcType */
            ifnonnull 16
            aconst_null
            goto 17
      StackMap locals: jdk.vm.ci.meta.ResolvedJavaType jdk.vm.ci.meta.ResolvedJavaType
      StackMap stack:
        16: aload 7 /* srcType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.getComponentType:()Ljdk/vm/ci/meta/ResolvedJavaType;
      StackMap locals:
      StackMap stack: jdk.vm.ci.meta.ResolvedJavaType
        17: astore 9 /* srcComponentType */
        start local 9 // jdk.vm.ci.meta.ResolvedJavaType srcComponentType
        18: .line 481
            aload 8 /* destType */
            ifnonnull 19
            aconst_null
            goto 20
      StackMap locals: jdk.vm.ci.meta.ResolvedJavaType
      StackMap stack:
        19: aload 8 /* destType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.getComponentType:()Ljdk/vm/ci/meta/ResolvedJavaType;
      StackMap locals:
      StackMap stack: jdk.vm.ci.meta.ResolvedJavaType
        20: astore 10 /* destComponentType */
        start local 10 // jdk.vm.ci.meta.ResolvedJavaType destComponentType
        21: .line 482
            aload 9 /* srcComponentType */
            ifnull 26
            aload 10 /* destComponentType */
            ifnull 26
            aload 9 /* srcComponentType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isPrimitive:()Z
            ifne 26
            aload 10 /* destComponentType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isPrimitive:()Z
            ifne 26
        22: .line 483
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopySlowPathIntrinsicSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 4 /* snippetInfo */
        23: .line 484
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.checkcastArraycopyWorkSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 5 /* slowPathSnippetInfo */
        24: .line 485
            invokestatic org.graalvm.compiler.core.common.LocationIdentity.any:()Lorg/graalvm/compiler/core/common/LocationIdentity;
            astore 6 /* slowPathArgument */
        25: .line 490
            aconst_null
            astore 3 /* componentKind */
        end local 10 // jdk.vm.ci.meta.ResolvedJavaType destComponentType
        end local 9 // jdk.vm.ci.meta.ResolvedJavaType srcComponentType
        end local 8 // jdk.vm.ci.meta.ResolvedJavaType destType
        end local 7 // jdk.vm.ci.meta.ResolvedJavaType srcType
        26: .line 493
      StackMap locals:
      StackMap stack:
            aload 3 /* componentKind */
            ifnonnull 37
            aload 4 /* snippetInfo */
            ifnonnull 37
        27: .line 494
            aload 1 /* arraycopy */
            iconst_0
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.selectComponentKind:(Lorg/graalvm/compiler/replacements/nodes/BasicArrayCopyNode;Z)Ljdk/vm/ci/meta/JavaKind;
            astore 7 /* predictedKind */
        start local 7 // jdk.vm.ci.meta.JavaKind predictedKind
        28: .line 495
            aload 7 /* predictedKind */
            ifnull 37
        29: .line 501
            aload 7 /* predictedKind */
            astore 3 /* componentKind */
        30: .line 502
            aload 7 /* predictedKind */
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            if_acmpne 36
        31: .line 503
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopySlowPathIntrinsicSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 4 /* snippetInfo */
        32: .line 504
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyPredictedObjectWorkSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 5 /* slowPathSnippetInfo */
        33: .line 505
            aload 7 /* predictedKind */
            astore 6 /* slowPathArgument */
        34: .line 506
            aconst_null
            astore 3 /* componentKind */
        35: .line 507
            goto 37
        36: .line 508
      StackMap locals: jdk.vm.ci.meta.JavaKind
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyPredictedExactIntrinsicSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 4 /* snippetInfo */
        end local 7 // jdk.vm.ci.meta.JavaKind predictedKind
        37: .line 512
      StackMap locals:
      StackMap stack:
            aload 4 /* snippetInfo */
            ifnonnull 39
        38: .line 513
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyGenericSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 4 /* snippetInfo */
        39: .line 516
      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 7 /* args */
        start local 7 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
        40: .line 517
            aload 7 /* 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
        41: .line 518
            aload 7 /* 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
        42: .line 519
            aload 7 /* 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
        43: .line 520
            aload 7 /* 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
        44: .line 521
            aload 7 /* 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
        45: .line 522
            aload 4 /* snippetInfo */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyUnrolledIntrinsicSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpne 51
        46: .line 523
            aload 7 /* 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
        47: .line 524
            aload 7 /* args */
            ldc "elementKind"
            aload 3 /* componentKind */
            ifnull 48
            aload 3 /* componentKind */
            goto 49
      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.replacements.SnippetTemplate$SnippetInfo java.lang.Object org.graalvm.compiler.replacements.SnippetTemplate$Arguments
      StackMap stack: org.graalvm.compiler.replacements.SnippetTemplate$Arguments java.lang.String
        48: 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.replacements.SnippetTemplate$SnippetInfo java.lang.Object org.graalvm.compiler.replacements.SnippetTemplate$Arguments
      StackMap stack: org.graalvm.compiler.replacements.SnippetTemplate$Arguments java.lang.String jdk.vm.ci.meta.JavaKind
        49: invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        50: .line 525
            goto 71
      StackMap locals:
      StackMap stack:
        51: aload 4 /* snippetInfo */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopySlowPathIntrinsicSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpne 66
        52: .line 526
            aconst_null
            astore 8 /* predictedKlass */
        start local 8 // org.graalvm.compiler.nodes.ValueNode predictedKlass
        53: .line 527
            aload 6 /* slowPathArgument */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyPredictedObjectWorkSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpne 57
        54: .line 528
            aload 2 /* tool */
            invokeinterface org.graalvm.compiler.nodes.spi.LoweringTool.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            ldc [Ljava/lang/Object;
            invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaType:(Ljava/lang/Class;)Ljdk/vm/ci/meta/ResolvedJavaType;
            checkcast jdk.vm.ci.hotspot.HotSpotResolvedObjectType
            astore 9 /* arrayClass */
        start local 9 // jdk.vm.ci.hotspot.HotSpotResolvedObjectType arrayClass
        55: .line 529
            invokestatic org.graalvm.compiler.hotspot.nodes.type.KlassPointerStamp.klassNonNull:()Lorg/graalvm/compiler/hotspot/nodes/type/KlassPointerStamp;
            aload 9 /* arrayClass */
            invokeinterface jdk.vm.ci.hotspot.HotSpotResolvedObjectType.klass:()Ljdk/vm/ci/meta/Constant;
            aload 2 /* tool */
            invokeinterface org.graalvm.compiler.nodes.spi.LoweringTool.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokestatic org.graalvm.compiler.nodes.ConstantNode.forConstant:(Lorg/graalvm/compiler/core/common/type/Stamp;Ljdk/vm/ci/meta/Constant;Ljdk/vm/ci/meta/MetaAccessProvider;Lorg/graalvm/compiler/nodes/StructuredGraph;)Lorg/graalvm/compiler/nodes/ConstantNode;
            astore 8 /* predictedKlass */
        end local 9 // jdk.vm.ci.hotspot.HotSpotResolvedObjectType arrayClass
        56: .line 530
            goto 58
        57: .line 531
      StackMap locals: org.graalvm.compiler.nodes.ValueNode
      StackMap stack:
            invokestatic org.graalvm.compiler.hotspot.nodes.type.KlassPointerStamp.klassAlwaysNull:()Lorg/graalvm/compiler/hotspot/nodes/type/KlassPointerStamp;
            getstatic jdk.vm.ci.meta.JavaConstant.NULL_POINTER:Ljdk/vm/ci/meta/JavaConstant;
            aload 2 /* tool */
            invokeinterface org.graalvm.compiler.nodes.spi.LoweringTool.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokestatic org.graalvm.compiler.nodes.ConstantNode.forConstant:(Lorg/graalvm/compiler/core/common/type/Stamp;Ljdk/vm/ci/meta/Constant;Ljdk/vm/ci/meta/MetaAccessProvider;Lorg/graalvm/compiler/nodes/StructuredGraph;)Lorg/graalvm/compiler/nodes/ConstantNode;
            astore 8 /* predictedKlass */
        58: .line 533
      StackMap locals:
      StackMap stack:
            aload 7 /* args */
            ldc "predictedKlass"
            aload 8 /* predictedKlass */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        59: .line 534
            aload 7 /* args */
            ldc "elementKind"
            aload 3 /* componentKind */
            ifnull 60
            aload 3 /* componentKind */
            goto 61
      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.replacements.SnippetTemplate$SnippetInfo java.lang.Object org.graalvm.compiler.replacements.SnippetTemplate$Arguments org.graalvm.compiler.nodes.ValueNode
      StackMap stack: org.graalvm.compiler.replacements.SnippetTemplate$Arguments java.lang.String
        60: 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.replacements.SnippetTemplate$SnippetInfo java.lang.Object org.graalvm.compiler.replacements.SnippetTemplate$Arguments org.graalvm.compiler.nodes.ValueNode
      StackMap stack: org.graalvm.compiler.replacements.SnippetTemplate$Arguments java.lang.String jdk.vm.ci.meta.JavaKind
        61: invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        62: .line 535
            aload 7 /* args */
            ldc "slowPath"
            aload 5 /* slowPathSnippetInfo */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        63: .line 536
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.$assertionsDisabled:Z
            ifne 64
            aload 6 /* slowPathArgument */
            ifnonnull 64
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        64: .line 537
      StackMap locals:
      StackMap stack:
            aload 7 /* args */
            ldc "slowPathArgument"
            aload 6 /* slowPathArgument */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        end local 8 // org.graalvm.compiler.nodes.ValueNode predictedKlass
        65: .line 538
            goto 71
      StackMap locals:
      StackMap stack:
        66: aload 4 /* snippetInfo */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyExactIntrinsicSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpeq 67
            aload 4 /* snippetInfo */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyPredictedExactIntrinsicSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpne 71
        67: .line 539
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.$assertionsDisabled:Z
            ifne 68
            aload 3 /* componentKind */
            ifnonnull 68
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        68: .line 540
      StackMap locals:
      StackMap stack:
            aload 7 /* args */
            ldc "elementKind"
            aload 3 /* componentKind */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        69: .line 541
            aload 7 /* args */
            ldc "counter"
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.arraycopyCallCounters:Ljava/util/EnumMap;
            aload 3 /* componentKind */
            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
        70: .line 542
            aload 7 /* args */
            ldc "copiedCounter"
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.arraycopyCallCopiedCounters:Ljava/util/EnumMap;
            aload 3 /* componentKind */
            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
        71: .line 544
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 7 /* 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 545
            return
        end local 7 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
        end local 6 // java.lang.Object slowPathArgument
        end local 5 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo slowPathSnippetInfo
        end local 4 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
        end local 3 // jdk.vm.ci.meta.JavaKind componentKind
        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        componentKind  Ljdk/vm/ci/meta/JavaKind;
            2   73     4          snippetInfo  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            3   73     5  slowPathSnippetInfo  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            4   73     6     slowPathArgument  Ljava/lang/Object;
           14   26     7              srcType  Ljdk/vm/ci/meta/ResolvedJavaType;
           15   26     8             destType  Ljdk/vm/ci/meta/ResolvedJavaType;
           18   26     9     srcComponentType  Ljdk/vm/ci/meta/ResolvedJavaType;
           21   26    10    destComponentType  Ljdk/vm/ci/meta/ResolvedJavaType;
           28   37     7        predictedKind  Ljdk/vm/ci/meta/JavaKind;
           40   73     7                 args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
           53   65     8       predictedKlass  Lorg/graalvm/compiler/nodes/ValueNode;
           55   56     9           arrayClass  Ljdk/vm/ci/hotspot/HotSpotResolvedObjectType;
    MethodParameters:
           Name  Flags
      arraycopy  
      tool       

  public void lower(org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySlowPathNode, org.graalvm.compiler.nodes.spi.LoweringTool);
    descriptor: (Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySlowPathNode;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.ArrayCopySlowPathNode arraycopy
        start local 2 // org.graalvm.compiler.nodes.spi.LoweringTool tool
         0: .line 548
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySlowPathNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            astore 3 /* graph */
        start local 3 // org.graalvm.compiler.nodes.StructuredGraph graph
         1: .line 549
            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 551
            return
         3: .line 553
      StackMap locals: org.graalvm.compiler.nodes.StructuredGraph
      StackMap stack:
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySlowPathNode.getSnippet:()Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 4 /* snippetInfo */
        start local 4 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
         4: .line 554
            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 555
            aload 5 /* args */
            ldc "nonNullSrc"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySlowPathNode.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 556
            aload 5 /* args */
            ldc "srcPos"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySlowPathNode.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 557
            aload 5 /* args */
            ldc "nonNullDest"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySlowPathNode.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 558
            aload 5 /* args */
            ldc "destPos"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySlowPathNode.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 559
            aload 4 /* snippetInfo */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyUnrolledWorkSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpne 13
        10: .line 560
            aload 5 /* args */
            ldc "length"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySlowPathNode.getArgument:()Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()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
        11: .line 561
            aload 5 /* args */
            ldc "elementKind"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySlowPathNode.getElementKind:()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
        12: .line 562
            goto 14
        13: .line 563
      StackMap locals: org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo org.graalvm.compiler.replacements.SnippetTemplate$Arguments
      StackMap stack:
            aload 5 /* args */
            ldc "length"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySlowPathNode.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
        14: .line 565
      StackMap locals:
      StackMap stack:
            aload 4 /* snippetInfo */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyPredictedObjectWorkSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            if_acmpne 18
        15: .line 566
            aload 5 /* args */
            ldc "objectArrayKlass"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySlowPathNode.getPredictedKlass:()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
        16: .line 567
            aload 5 /* args */
            ldc "counter"
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.arraycopyCallCounters:Ljava/util/EnumMap;
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            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
        17: .line 568
            aload 5 /* args */
            ldc "copiedCounter"
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.arraycopyCallCopiedCounters:Ljava/util/EnumMap;
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            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
        18: .line 570
      StackMap locals:
      StackMap stack:
            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
        19: .line 571
            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.ArrayCopySlowPathNode arraycopy
        end local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   20     0         this  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Templates;
            0   20     1    arraycopy  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySlowPathNode;
            0   20     2         tool  Lorg/graalvm/compiler/nodes/spi/LoweringTool;
            1   20     3        graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            4   20     4  snippetInfo  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            5   20     5         args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
    MethodParameters:
           Name  Flags
      arraycopy  
      tool       

  public void lower(org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyUnrollNode, org.graalvm.compiler.nodes.spi.LoweringTool);
    descriptor: (Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopyUnrollNode;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.ArrayCopyUnrollNode arraycopy
        start local 2 // org.graalvm.compiler.nodes.spi.LoweringTool tool
         0: .line 574
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyUnrollNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            astore 3 /* graph */
        start local 3 // org.graalvm.compiler.nodes.StructuredGraph graph
         1: .line 575
            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 577
            return
         3: .line 579
      StackMap locals: org.graalvm.compiler.nodes.StructuredGraph
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.arraycopyUnrolledWorkSnippet:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            astore 4 /* snippetInfo */
        start local 4 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippetInfo
         4: .line 580
            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 581
            aload 5 /* args */
            ldc "nonNullSrc"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyUnrollNode.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 582
            aload 5 /* args */
            ldc "srcPos"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyUnrollNode.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 583
            aload 5 /* args */
            ldc "nonNullDest"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyUnrollNode.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 584
            aload 5 /* args */
            ldc "destPos"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyUnrollNode.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 585
            aload 5 /* args */
            ldc "length"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyUnrollNode.getUnrollLength:()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
        10: .line 586
            aload 5 /* args */
            ldc "elementKind"
            aload 1 /* arraycopy */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyUnrollNode.getElementKind:()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
        11: .line 587
            aload 0 /* this */
            aload 5 /* args */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.template:(Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;)Lorg/graalvm/compiler/replacements/SnippetTemplate;
            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 /* arraycopy */
            getstatic org.graalvm.compiler.replacements.SnippetTemplate.DEFAULT_REPLACER:Lorg/graalvm/compiler/replacements/SnippetTemplate$UsageReplacer;
            aload 5 /* args */
            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;)Ljava/util/Map;
            pop
        12: .line 588
            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.ArrayCopyUnrollNode 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/ArrayCopyUnrollNode;
            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 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 598
            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 599
            aload 0 /* this */
            aload 1 /* args */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates.template:(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 600
            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 */
            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;)Ljava/util/Map;
            astore 5 /* replacements */
        start local 5 // java.util.Map replacements
         3: .line 601
            aload 5 /* replacements */
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.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 java.util.Map 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 602
            aload 6 /* originalNode */
            instanceof org.graalvm.compiler.nodes.Invoke
            ifeq 19
         6: .line 603
            aload 5 /* replacements */
            aload 6 /* originalNode */
            invokeinterface java.util.Map.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 604
            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 605
      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 java.util.Map 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 607
            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 608
            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 611
      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 612
            aload 2 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.stateDuring:()Lorg/graalvm/compiler/nodes/FrameState;
            ifnull 15
        13: .line 613
            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 614
            goto 17
        15: .line 615
      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
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        16: .line 616
      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 618
      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 619
            goto 24
      StackMap locals:
      StackMap stack:
        19: aload 6 /* originalNode */
            instanceof org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySlowPathNode
            ifeq 24
        20: .line 620
            aload 5 /* replacements */
            aload 6 /* originalNode */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySlowPathNode
            astore 8 /* slowPath */
        start local 8 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySlowPathNode slowPath
        21: .line 621
            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
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        22: .line 622
      StackMap locals: org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySlowPathNode
      StackMap stack:
            aload 8 /* slowPath */
            aload 2 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySlowPathNode.setStateAfter:(Lorg/graalvm/compiler/nodes/FrameState;)V
        23: .line 623
            aload 8 /* slowPath */
            aload 2 /* arraycopy */
            invokevirtual org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode.getBci:()I
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySlowPathNode.setBci:(I)V
        end local 8 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySlowPathNode slowPath
        end local 6 // org.graalvm.compiler.graph.Node originalNode
        24: .line 601
      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 java.util.Map top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        25: .line 626
            return
        end local 5 // java.util.Map 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   26     0          this  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Templates;
            0   26     1          args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            0   26     2     arraycopy  Lorg/graalvm/compiler/replacements/nodes/BasicArrayCopyNode;
            1   26     3         graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            2   26     4      template  Lorg/graalvm/compiler/replacements/SnippetTemplate;
            3   26     5  replacements  Ljava/util/Map<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/ArrayCopySlowPathNode;
    MethodParameters:
           Name  Flags
      args       
      arraycopy  
}
SourceFile: "ArrayCopySnippets.java"
NestHost: org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets
InnerClasses:
  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 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