#
# Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#
# ##########################################################
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
# ##########################################################
#
class name java/lang/instrument/ClassDefinition
header extends java/lang/Object flags 31 classAnnotations @Ljdk/Profile+Annotation;(value=I3)
method name <init> descriptor (Ljava/lang/Class;[B)V flags 1 signature (Ljava/lang/Class<*>;[B)V
method name getDefinitionClass descriptor ()Ljava/lang/Class; flags 1 signature ()Ljava/lang/Class<*>;
method name getDefinitionClassFile descriptor ()[B flags 1

class name java/lang/instrument/ClassFileTransformer
header extends java/lang/Object flags 601 classAnnotations @Ljdk/Profile+Annotation;(value=I3)
method name transform descriptor (Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/Class;Ljava/security/ProtectionDomain;[B)[B thrownTypes java/lang/instrument/IllegalClassFormatException flags 401 signature (Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/Class<*>;Ljava/security/ProtectionDomain;[B)[B

class name java/lang/instrument/IllegalClassFormatException
header extends java/lang/Exception flags 21 classAnnotations @Ljdk/Profile+Annotation;(value=I3)
method name <init> descriptor ()V flags 1
method name <init> descriptor (Ljava/lang/String;)V flags 1

class name java/lang/instrument/Instrumentation
header extends java/lang/Object flags 601 classAnnotations @Ljdk/Profile+Annotation;(value=I3)
method name addTransformer descriptor (Ljava/lang/instrument/ClassFileTransformer;Z)V flags 401
method name addTransformer descriptor (Ljava/lang/instrument/ClassFileTransformer;)V flags 401
method name removeTransformer descriptor (Ljava/lang/instrument/ClassFileTransformer;)Z flags 401
method name isRetransformClassesSupported descriptor ()Z flags 401
method name retransformClasses descriptor ([Ljava/lang/Class;)V thrownTypes java/lang/instrument/UnmodifiableClassException flags 481 signature ([Ljava/lang/Class<*>;)V
method name isRedefineClassesSupported descriptor ()Z flags 401
method name redefineClasses descriptor ([Ljava/lang/instrument/ClassDefinition;)V thrownTypes java/lang/ClassNotFoundException,java/lang/instrument/UnmodifiableClassException flags 481
method name isModifiableClass descriptor (Ljava/lang/Class;)Z flags 401 signature (Ljava/lang/Class<*>;)Z
method name getAllLoadedClasses descriptor ()[Ljava/lang/Class; flags 401
method name getInitiatedClasses descriptor (Ljava/lang/ClassLoader;)[Ljava/lang/Class; flags 401
method name getObjectSize descriptor (Ljava/lang/Object;)J flags 401
method name appendToBootstrapClassLoaderSearch descriptor (Ljava/util/jar/JarFile;)V flags 401
method name appendToSystemClassLoaderSearch descriptor (Ljava/util/jar/JarFile;)V flags 401
method name isNativeMethodPrefixSupported descriptor ()Z flags 401
method name setNativeMethodPrefix descriptor (Ljava/lang/instrument/ClassFileTransformer;Ljava/lang/String;)V flags 401

class name java/lang/instrument/UnmodifiableClassException
header extends java/lang/Exception flags 21 classAnnotations @Ljdk/Profile+Annotation;(value=I3)
method name <init> descriptor ()V flags 1
method name <init> descriptor (Ljava/lang/String;)V flags 1

