// Generated by delombok at Sun Nov 06 21:17:29 CET 2022

import java.util.NavigableSet;

public class SingularNavigableSet<T> {
	private NavigableSet rawTypes;
	private NavigableSet<Integer> integers;
	private NavigableSet<T> generics;
	private NavigableSet<? extends Number> extendsGenerics;

	@java.lang.SuppressWarnings("all")
	SingularNavigableSet(final NavigableSet rawTypes, final NavigableSet<Integer> integers, final NavigableSet<T> generics, final NavigableSet<? extends Number> extendsGenerics) {
		this.rawTypes = rawTypes;
		this.integers = integers;
		this.generics = generics;
		this.extendsGenerics = extendsGenerics;
	}


	@java.lang.SuppressWarnings("all")
	public static class SingularNavigableSetBuilder<T> {
		@java.lang.SuppressWarnings("all")
		private java.util.ArrayList<java.lang.Object> rawTypes;
		@java.lang.SuppressWarnings("all")
		private java.util.ArrayList<Integer> integers;
		@java.lang.SuppressWarnings("all")
		private java.util.ArrayList<T> generics;
		@java.lang.SuppressWarnings("all")
		private java.util.ArrayList<Number> extendsGenerics;

		@java.lang.SuppressWarnings("all")
		SingularNavigableSetBuilder() {
		}

		@java.lang.SuppressWarnings("all")
		public SingularNavigableSet.SingularNavigableSetBuilder<T> rawType(final java.lang.Object rawType) {
			if (this.rawTypes == null) this.rawTypes = new java.util.ArrayList<java.lang.Object>();
			this.rawTypes.add(rawType);
			return this;
		}

		@java.lang.SuppressWarnings("all")
		public SingularNavigableSet.SingularNavigableSetBuilder<T> rawTypes(final java.util.Collection<?> rawTypes) {
			if (rawTypes == null) {
				throw new java.lang.NullPointerException("rawTypes cannot be null");
			}
			if (this.rawTypes == null) this.rawTypes = new java.util.ArrayList<java.lang.Object>();
			this.rawTypes.addAll(rawTypes);
			return this;
		}

		@java.lang.SuppressWarnings("all")
		public SingularNavigableSet.SingularNavigableSetBuilder<T> clearRawTypes() {
			if (this.rawTypes != null) this.rawTypes.clear();
			return this;
		}

		@java.lang.SuppressWarnings("all")
		public SingularNavigableSet.SingularNavigableSetBuilder<T> integer(final Integer integer) {
			if (this.integers == null) this.integers = new java.util.ArrayList<Integer>();
			this.integers.add(integer);
			return this;
		}

		@java.lang.SuppressWarnings("all")
		public SingularNavigableSet.SingularNavigableSetBuilder<T> integers(final java.util.Collection<? extends Integer> integers) {
			if (integers == null) {
				throw new java.lang.NullPointerException("integers cannot be null");
			}
			if (this.integers == null) this.integers = new java.util.ArrayList<Integer>();
			this.integers.addAll(integers);
			return this;
		}

		@java.lang.SuppressWarnings("all")
		public SingularNavigableSet.SingularNavigableSetBuilder<T> clearIntegers() {
			if (this.integers != null) this.integers.clear();
			return this;
		}

		@java.lang.SuppressWarnings("all")
		public SingularNavigableSet.SingularNavigableSetBuilder<T> generic(final T generic) {
			if (this.generics == null) this.generics = new java.util.ArrayList<T>();
			this.generics.add(generic);
			return this;
		}

		@java.lang.SuppressWarnings("all")
		public SingularNavigableSet.SingularNavigableSetBuilder<T> generics(final java.util.Collection<? extends T> generics) {
			if (generics == null) {
				throw new java.lang.NullPointerException("generics cannot be null");
			}
			if (this.generics == null) this.generics = new java.util.ArrayList<T>();
			this.generics.addAll(generics);
			return this;
		}

		@java.lang.SuppressWarnings("all")
		public SingularNavigableSet.SingularNavigableSetBuilder<T> clearGenerics() {
			if (this.generics != null) this.generics.clear();
			return this;
		}

		@java.lang.SuppressWarnings("all")
		public SingularNavigableSet.SingularNavigableSetBuilder<T> extendsGeneric(final Number extendsGeneric) {
			if (this.extendsGenerics == null) this.extendsGenerics = new java.util.ArrayList<Number>();
			this.extendsGenerics.add(extendsGeneric);
			return this;
		}

		@java.lang.SuppressWarnings("all")
		public SingularNavigableSet.SingularNavigableSetBuilder<T> extendsGenerics(final java.util.Collection<? extends Number> extendsGenerics) {
			if (extendsGenerics == null) {
				throw new java.lang.NullPointerException("extendsGenerics cannot be null");
			}
			if (this.extendsGenerics == null) this.extendsGenerics = new java.util.ArrayList<Number>();
			this.extendsGenerics.addAll(extendsGenerics);
			return this;
		}

		@java.lang.SuppressWarnings("all")
		public SingularNavigableSet.SingularNavigableSetBuilder<T> clearExtendsGenerics() {
			if (this.extendsGenerics != null) this.extendsGenerics.clear();
			return this;
		}

		@java.lang.SuppressWarnings("all")
		public SingularNavigableSet<T> build() {
			java.util.NavigableSet<java.lang.Object> rawTypes = new java.util.TreeSet<java.lang.Object>();
			if (this.rawTypes != null) rawTypes.addAll(this.rawTypes);
			rawTypes = java.util.Collections.unmodifiableNavigableSet(rawTypes);
			java.util.NavigableSet<Integer> integers = new java.util.TreeSet<Integer>();
			if (this.integers != null) integers.addAll(this.integers);
			integers = java.util.Collections.unmodifiableNavigableSet(integers);
			java.util.NavigableSet<T> generics = new java.util.TreeSet<T>();
			if (this.generics != null) generics.addAll(this.generics);
			generics = java.util.Collections.unmodifiableNavigableSet(generics);
			java.util.NavigableSet<Number> extendsGenerics = new java.util.TreeSet<Number>();
			if (this.extendsGenerics != null) extendsGenerics.addAll(this.extendsGenerics);
			extendsGenerics = java.util.Collections.unmodifiableNavigableSet(extendsGenerics);
			return new SingularNavigableSet<T>(rawTypes, integers, generics, extendsGenerics);
		}

		@java.lang.Override
		@java.lang.SuppressWarnings("all")
		public java.lang.String toString() {
			return "SingularNavigableSet.SingularNavigableSetBuilder(rawTypes=" + this.rawTypes + ", integers=" + this.integers + ", generics=" + this.generics + ", extendsGenerics=" + this.extendsGenerics + ")";
		}
	}

	@java.lang.SuppressWarnings("all")
	public static <T> SingularNavigableSet.SingularNavigableSetBuilder<T> builder() {
		return new SingularNavigableSet.SingularNavigableSetBuilder<T>();
	}
}
