// Path: SpongePowered/ch.vorburger.minecraft.learning/src/main/java/ch/vorburger/utils/EvenMoreObjects.java
// public final class EvenMoreObjects {
// 
//     @SuppressWarnings("unchecked")
//     public static <T> boolean equalsHelper(T self, @Nullable Object other, BooleanEqualsFunction<T> equals) {
//         if (other == null) {
//             return false;
//         }
//         if (other == self) {
//             return true;
//         }
//         if (self.getClass() != other.getClass()) {
//             return false;
//         }
//         return equals.apply(self, (T) other);
//     }
// 
//     @FunctionalInterface
//     public interface BooleanEqualsFunction<T> extends BiFunction<T, T, Boolean> { }
// 
//     private EvenMoreObjects() { }
// }


import java.util.Collections;
import java.util.List;
import java.util.Objects;
import org.eclipse.jdt.annotation.Nullable;
import ch.vorburger.utils.EvenMoreObjects;
	 */
	public ServiceQuestion(String id, String text, List<String> choices) {
		super();
		this.id = id;
		this.text = text;
		this.choices = Collections.unmodifiableList(choices);
		
		if (choices.isEmpty())
			throw new IllegalArgumentException("choices.isEmpty(), so it's a free-text not multiple choice question");
	}

	public String getId() {
		return id;
	}

	public String getText() {
		return text;
	}

	public List<String> getChoices() {
		return choices;
	}
	
	@Override
	public int hashCode() {
		return Objects.hash(id, text, choices);
	}
	
	@Override
	public boolean equals(@Nullable Object other) {
// Path: SpongePowered/ch.vorburger.minecraft.learning/src/main/java/ch/vorburger/utils/EvenMoreObjects.java
// public final class EvenMoreObjects {
// 
//     @SuppressWarnings("unchecked")
//     public static <T> boolean equalsHelper(T self, @Nullable Object other, BooleanEqualsFunction<T> equals) {
//         if (other == null) {
//             return false;
//         }
//         if (other == self) {
//             return true;
//         }
//         if (self.getClass() != other.getClass()) {
//             return false;
//         }
//         return equals.apply(self, (T) other);
//     }
// 
//     @FunctionalInterface
//     public interface BooleanEqualsFunction<T> extends BiFunction<T, T, Boolean> { }
// 
//     private EvenMoreObjects() { }
// }


// Path: SpongePowered/ch.vorburger.minecraft.learning/src/main/java/ch/vorburger/learning/ServiceQuestion.java
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import org.eclipse.jdt.annotation.Nullable;
import ch.vorburger.utils.EvenMoreObjects;

	 */
	public ServiceQuestion(String id, String text, List<String> choices) {
		super();
		this.id = id;
		this.text = text;
		this.choices = Collections.unmodifiableList(choices);
		
		if (choices.isEmpty())
			throw new IllegalArgumentException("choices.isEmpty(), so it's a free-text not multiple choice question");
	}

	public String getId() {
		return id;
	}

	public String getText() {
		return text;
	}

	public List<String> getChoices() {
		return choices;
	}
	
	@Override
	public int hashCode() {
		return Objects.hash(id, text, choices);
	}
	
	@Override
	public boolean equals(@Nullable Object other) {
		return EvenMoreObjects.equalsHelper(this, other,