// Generated by delombok at Sun Nov 06 21:23:53 CET 2022

import java.util.List;
import java.util.Collection;

class BuilderSingularLists<T> {
	private List<T> children;
	private Collection<? extends Number> scarves;
	@SuppressWarnings("all")
	private List rawList;

	@java.lang.SuppressWarnings("all")
	BuilderSingularLists(final List<T> children, final Collection<? extends Number> scarves, final List rawList) {
		this.children = children;
		this.scarves = scarves;
		this.rawList = rawList;
	}


	@java.lang.SuppressWarnings("all")
	public static class BuilderSingularListsBuilder<T> {
		@java.lang.SuppressWarnings("all")
		private java.util.ArrayList<T> children;
		@java.lang.SuppressWarnings("all")
		private java.util.ArrayList<Number> scarves;
		@java.lang.SuppressWarnings("all")
		private java.util.ArrayList<java.lang.Object> rawList;

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

		@java.lang.SuppressWarnings("all")
		public BuilderSingularLists.BuilderSingularListsBuilder<T> child(final T child) {
			if (this.children == null) this.children = new java.util.ArrayList<T>();
			this.children.add(child);
			return this;
		}

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

		@java.lang.SuppressWarnings("all")
		public BuilderSingularLists.BuilderSingularListsBuilder<T> clearChildren() {
			if (this.children != null) this.children.clear();
			return this;
		}

		@java.lang.SuppressWarnings("all")
		public BuilderSingularLists.BuilderSingularListsBuilder<T> scarf(final Number scarf) {
			if (this.scarves == null) this.scarves = new java.util.ArrayList<Number>();
			this.scarves.add(scarf);
			return this;
		}

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

		@java.lang.SuppressWarnings("all")
		public BuilderSingularLists.BuilderSingularListsBuilder<T> clearScarves() {
			if (this.scarves != null) this.scarves.clear();
			return this;
		}

		@java.lang.SuppressWarnings("all")
		public BuilderSingularLists.BuilderSingularListsBuilder<T> rawList(final java.lang.Object rawList) {
			if (this.rawList == null) this.rawList = new java.util.ArrayList<java.lang.Object>();
			this.rawList.add(rawList);
			return this;
		}

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

		@java.lang.SuppressWarnings("all")
		public BuilderSingularLists.BuilderSingularListsBuilder<T> clearRawList() {
			if (this.rawList != null) this.rawList.clear();
			return this;
		}

		@java.lang.SuppressWarnings("all")
		public BuilderSingularLists<T> build() {
			java.util.List<T> children;
			switch (this.children == null ? 0 : this.children.size()) {
			case 0: 
				children = java.util.Collections.emptyList();
				break;
			case 1: 
				children = java.util.Collections.singletonList(this.children.get(0));
				break;
			default: 
				children = java.util.Collections.unmodifiableList(new java.util.ArrayList<T>(this.children));
			}
			java.util.Collection<Number> scarves;
			switch (this.scarves == null ? 0 : this.scarves.size()) {
			case 0: 
				scarves = java.util.Collections.emptyList();
				break;
			case 1: 
				scarves = java.util.Collections.singletonList(this.scarves.get(0));
				break;
			default: 
				scarves = java.util.Collections.unmodifiableList(new java.util.ArrayList<Number>(this.scarves));
			}
			java.util.List<java.lang.Object> rawList;
			switch (this.rawList == null ? 0 : this.rawList.size()) {
			case 0: 
				rawList = java.util.Collections.emptyList();
				break;
			case 1: 
				rawList = java.util.Collections.singletonList(this.rawList.get(0));
				break;
			default: 
				rawList = java.util.Collections.unmodifiableList(new java.util.ArrayList<java.lang.Object>(this.rawList));
			}
			return new BuilderSingularLists<T>(children, scarves, rawList);
		}

		@java.lang.Override
		@java.lang.SuppressWarnings("all")
		public java.lang.String toString() {
			return "BuilderSingularLists.BuilderSingularListsBuilder(children=" + this.children + ", scarves=" + this.scarves + ", rawList=" + this.rawList + ")";
		}
	}

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