//version 8:
public class NullLibrary1 {
	String foo;
	@java.lang.Override
	@java.lang.SuppressWarnings("all")
	public boolean equals(final java.lang.@org.eclipse.jdt.annotation.Nullable Object o) {
		if (o == this) return true;
		if (!(o instanceof NullLibrary1)) return false;
		final NullLibrary1 other = (NullLibrary1) o;
		if (!other.canEqual((java.lang.Object) this)) return false;
		final java.lang.Object this$foo = this.foo;
		final java.lang.Object other$foo = other.foo;
		if (this$foo == null ? other$foo != null : !this$foo.equals(other$foo)) return false;
		return true;
	}
	@java.lang.SuppressWarnings("all")
	protected boolean canEqual(final java.lang.@org.eclipse.jdt.annotation.Nullable Object other) {
		return other instanceof NullLibrary1;
	}
	@java.lang.Override
	@java.lang.SuppressWarnings("all")
	public int hashCode() {
		final int PRIME = 59;
		int result = 1;
		final java.lang.Object $foo = this.foo;
		result = result * PRIME + ($foo == null ? 43 : $foo.hashCode());
		return result;
	}
	@java.lang.Override
	@java.lang.SuppressWarnings("all")
	public java.lang.@org.eclipse.jdt.annotation.NonNull String toString() {
		return "NullLibrary1(foo=" + this.foo + ")";
	}
	@java.lang.SuppressWarnings("all")
	public NullLibrary1(final String foo) {
		this.foo = foo;
	}
	/**
	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed).
	 */
	@org.eclipse.jdt.annotation.NonNull
	@java.lang.SuppressWarnings("all")
	public NullLibrary1 withFoo(final String foo) {
		return this.foo == foo ? this : new NullLibrary1(foo);
	}
}