syntax = "proto3";

package java.util;

import "java.lang.proto";
import "org.wildfly.clustering.marshalling.protostream.proto";
import "org.wildfly.clustering.marshalling.protostream.util.proto";

// IDs: 10 - 59

// Empty collections

/**
 * @TypeId(10)
 */
message EmptyList {
}

/**
 * @TypeId(11)
 */
message EmptyMap {
}

/**
 * @TypeId(12)
 */
message EmptyNavigableMap {
}

/**
 * @TypeId(13)
 */
message EmptyNavigableSet {
}

/**
 * @TypeId(14)
 */
message EmptySet {
}

// Singleton collections

/**
 * @TypeId(15)
 */
message SingletonList {
	optional	org.wildfly.clustering.marshalling.protostream.Any	value	= 1;
}

/**
 * @TypeId(16)
 */
message SingletonMap {
	optional	org.wildfly.clustering.marshalling.protostream.Any	key	= 1;
	optional	org.wildfly.clustering.marshalling.protostream.Any	value	= 2;
}

/**
 * @TypeId(17)
 */
message SingletonSet {
	optional	org.wildfly.clustering.marshalling.protostream.Any	value	= 1;
}

// Synchronized collections

/**
 * @TypeId(20)
 */
message SynchronizedCollection {
	optional	org.wildfly.clustering.marshalling.protostream.Any	value	 = 1;
}

/**
 * @TypeId(21)
 */
message SynchronizedList {
	optional	org.wildfly.clustering.marshalling.protostream.Any	value	 = 1;
}

/**
 * @TypeId(22)
 */
message SynchronizedMap {
	optional	org.wildfly.clustering.marshalling.protostream.Any	value	 = 1;
}

message SynchronizedNavigableMap {
	optional	org.wildfly.clustering.marshalling.protostream.Any	value	 = 1;
}

message SynchronizedNavigableSet {
	optional	org.wildfly.clustering.marshalling.protostream.Any	value	 = 1;
}

/**
 * @TypeId(23)
 */
message SynchronizedRandomAccessList {
	optional	org.wildfly.clustering.marshalling.protostream.Any	value	 = 1;
}

/**
 * @TypeId(24)
 */
message SynchronizedSet {
	optional	org.wildfly.clustering.marshalling.protostream.Any	value	 = 1;
}

message SynchronizedSortedMap {
	optional	org.wildfly.clustering.marshalling.protostream.Any	value	 = 1;
}

message SynchronizedSortedSet {
	optional	org.wildfly.clustering.marshalling.protostream.Any	value	 = 1;
}

// Unmodifiable collections

/**
 * @TypeId(25)
 */
message UnmodifiableCollection {
	optional	org.wildfly.clustering.marshalling.protostream.Any	collection	 = 1;
}

/**
 * @TypeId(26)
 */
message UnmodifiableList {
	optional	org.wildfly.clustering.marshalling.protostream.Any	collection	 = 1;
}

/**
 * @TypeId(27)
 */
message UnmodifiableMap {
	optional	org.wildfly.clustering.marshalling.protostream.Any	collection	 = 1;
}

message UnmodifiableNavigableMap {
	optional	org.wildfly.clustering.marshalling.protostream.Any	collection	 = 1;
}

message UnmodifiableNavigableSet {
	optional	org.wildfly.clustering.marshalling.protostream.Any	collection	 = 1;
}

/**
 * @TypeId(28)
 */
message UnmodifiableRandomAccessList {
	optional	org.wildfly.clustering.marshalling.protostream.Any	collection	 = 1;
}

/**
 * @TypeId(29)
 */
message UnmodifiableSet {
	optional	org.wildfly.clustering.marshalling.protostream.Any	collection	 = 1;
}

message UnmodifiableSortedMap {
	optional	org.wildfly.clustering.marshalling.protostream.Any	collection	 = 1;
}

message UnmodifiableSortedSet {
	optional	org.wildfly.clustering.marshalling.protostream.Any	collection	 = 1;
}

// Collections

/**
 * @TypeId(30)
 */
message ArrayDeque {
	repeated	org.wildfly.clustering.marshalling.protostream.Any	element	= 1;
}

/**
 * @TypeId(31)
 */
message ArrayList {
	repeated	org.wildfly.clustering.marshalling.protostream.Any	element	= 1;
}

/**
 * @TypeId(32)
 */
message BitSet {
	optional	bytes	value	= 1;
}

/**
 * @TypeId(33)
 */
message Calendar {
	optional	string	type	= 1;
	optional	Date	time	= 2;
	optional	bool	lenient	= 3;
	optional	string	zone	= 4;
	optional	uint32	firstDayOfWeek	= 5;
	optional	uint32	minDaysInFirstWeek	= 6;
}

/**
 * @TypeId(34)
 */
message Currency {
	optional	string	value	= 1;
}

/**
 * @TypeId(35)
 */
message Date {
	optional	uint64	postEpochSeconds	= 1;
	optional	uint64	preEpochSeconds	= 2;
	optional	uint32	millisOfSecond	= 3;
	optional	uint32	nanosOfSecond	= 4;
}

/**
 * @TypeId(36)
 */
message EnumMap {
	java.lang.Class	enumClass	= 1;
	repeated	org.wildfly.clustering.marshalling.protostream.Any	value	= 2;
}

/**
 * @TypeId(37)
 */
message EnumSet {
	oneof class {
		java.lang.Class	enumClass	= 1;
		java.lang.Class	complementClass	= 2;
	}
	BitSet	bits	= 3;
	repeated	uint32	element	= 4;
}

/**
 * @TypeId(38)
 */
message HashMap {
	repeated	SimpleEntry	entry	= 1;
}

/**
 * @TypeId(39)
 */
message HashSet {
	repeated	org.wildfly.clustering.marshalling.protostream.Any	element	= 1;
}

/**
 * @TypeId(40)
 */
message LinkedHashMap {
	repeated	SimpleEntry	entry	= 1;
	bool	accessOrder	= 2;
}

/**
 * @TypeId(41)
 */
message LinkedHashSet {
	repeated	org.wildfly.clustering.marshalling.protostream.Any	element	= 1;
}

/**
 * @TypeId(42)
 */
message LinkedList {
	repeated	org.wildfly.clustering.marshalling.protostream.Any	element	= 1;
}

/**
 * @TypeId(43)
 */
message Locale {
	string	language	= 1;
	string	region	= 2;
	string	variant	= 3;
	string	script	= 4;
	repeated	string	extension	= 5;
}

/**
 * @TypeId(45)
 */
message Properties {
	repeated	org.wildfly.clustering.marshalling.protostream.util.Property	entry	= 1;
}

/**
 * @TypeId(48)
 */
message SimpleEntry {
	org.wildfly.clustering.marshalling.protostream.Any	key	= 1;
	org.wildfly.clustering.marshalling.protostream.Any	value	= 2;
}

/**
 * @TypeId(49)
 */
message SimpleImmutableEntry {
	org.wildfly.clustering.marshalling.protostream.Any	key	= 1;
	org.wildfly.clustering.marshalling.protostream.Any	value	= 2;
}

/**
 * @TypeId(50)
 */
message TimeZone {
	string	value	= 1;
}

/**
 * @TypeId(51)
 */
message TreeMap {
	repeated	SimpleEntry	entry	= 1;
	optional	bool	reverse	= 2;
	optional	org.wildfly.clustering.marshalling.protostream.Any	comparator	= 3;
}

/**
 * @TypeId(52)
 */
message TreeSet {
	repeated	org.wildfly.clustering.marshalling.protostream.Any	element	= 1;
	bool	reverse	= 2;
	org.wildfly.clustering.marshalling.protostream.Any	comparator	= 3;
}

/**
 * @TypeId(53)
 */
message UUID {
	sfixed64	high	= 1;
	sfixed64	low	= 2;
}

// Unmodifiable collections

/**
 * @TypeId(54)
 */
message List12 {
	repeated	org.wildfly.clustering.marshalling.protostream.Any	element	 = 1;
}

/**
 * @TypeId(55)
 */
message ListN {
	repeated	org.wildfly.clustering.marshalling.protostream.Any	element	 = 1;
}

/**
 * @TypeId(56)
 */
message Map1 {
	org.wildfly.clustering.marshalling.protostream.Any	key	 = 1;
	org.wildfly.clustering.marshalling.protostream.Any	value	 = 2;
}

/**
 * @TypeId(57)
 */
message MapN {
	repeated	SimpleEntry	entry	 = 1;
}

/**
 * @TypeId(58)
 */
message Set12 {
	repeated	org.wildfly.clustering.marshalling.protostream.Any	element	 = 1;
}

/**
 * @TypeId(59)
 */
message SetN {
	repeated	org.wildfly.clustering.marshalling.protostream.Any	element	 = 1;
}
