#
# Copyright (c) 2021, 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 com/sun/nio/sctp/AbstractNotificationHandler
header extends java/lang/Object implements com/sun/nio/sctp/NotificationHandler flags 21 signature <T:Ljava/lang/Object;>Ljava/lang/Object;Lcom/sun/nio/sctp/NotificationHandler<TT;>;

class name com/sun/nio/sctp/Association
header extends java/lang/Object flags 21

class name com/sun/nio/sctp/HandlerResult
header extends java/lang/Enum flags 4031 signature Ljava/lang/Enum<Lcom/sun/nio/sctp/HandlerResult;>;

class name com/sun/nio/sctp/IllegalReceiveException
header extends java/lang/IllegalStateException flags 21

class name com/sun/nio/sctp/IllegalUnbindException
header extends java/lang/IllegalStateException flags 21

class name com/sun/nio/sctp/InvalidStreamException
header extends java/lang/IllegalArgumentException flags 21

class name com/sun/nio/sctp/MessageInfo
header extends java/lang/Object flags 421

class name com/sun/nio/sctp/Notification
header extends java/lang/Object flags 601

class name com/sun/nio/sctp/NotificationHandler
header extends java/lang/Object flags 601 signature <T:Ljava/lang/Object;>Ljava/lang/Object;

class name com/sun/nio/sctp/SctpChannel
header extends java/nio/channels/spi/AbstractSelectableChannel flags 421

class name com/sun/nio/sctp/SctpMultiChannel
header extends java/nio/channels/spi/AbstractSelectableChannel flags 421

class name com/sun/nio/sctp/SctpServerChannel
header extends java/nio/channels/spi/AbstractSelectableChannel flags 421

class name com/sun/nio/sctp/SctpSocketOption
header extends java/lang/Object implements java/net/SocketOption flags 601 signature <T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/net/SocketOption<TT;>;

class name com/sun/nio/sctp/SendFailedNotification
header extends java/lang/Object implements com/sun/nio/sctp/Notification flags 421

class name com/sun/nio/sctp/ShutdownNotification
header extends java/lang/Object implements com/sun/nio/sctp/Notification flags 421

