// 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.Objects;
import org.eclipse.jdt.annotation.Nullable;
import ch.vorburger.utils.EvenMoreObjects;
package ch.vorburger.learning;




public class UserID {
	// TODO https://immutables.github.io
	
	private final String scheme;
	private final String uuid;
	// TODO private final Locale locale;
	
	public UserID(String scheme, String uuid) {
		super();
		this.scheme = scheme;
		this.uuid = uuid;
	}

	public String getScheme() {
		return scheme;
	}
	
	public String getUuid() {
		return uuid;
	}
	
	@Override
	public int hashCode() {
		return Objects.hash(scheme, uuid);
	}
	
	@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/UserID.java
import java.util.Objects;
import org.eclipse.jdt.annotation.Nullable;
import ch.vorburger.utils.EvenMoreObjects;

package ch.vorburger.learning;




public class UserID {
	// TODO https://immutables.github.io
	
	private final String scheme;
	private final String uuid;
	// TODO private final Locale locale;
	
	public UserID(String scheme, String uuid) {
		super();
		this.scheme = scheme;
		this.uuid = uuid;
	}

	public String getScheme() {
		return scheme;
	}
	
	public String getUuid() {
		return uuid;
	}
	
	@Override
	public int hashCode() {
		return Objects.hash(scheme, uuid);
	}
	
	@Override
	public boolean equals(@Nullable Object other) {
		return EvenMoreObjects.equalsHelper(this, other,