package generic_multiple;
import io.norberg.automatter.AutoMatter;
import java.util.Collection;
import javax.annotation.Generated;
@Generated("io.norberg.automatter.processor.AutoMatterProcessor")
public final class GenericMultipleBuilder<T1, T2 extends Number, T3 extends Collection<T2>, T4 extends Iterable<T2> & Comparable<T4>> {
private T1 field1;
private T2 field2;
private T3 field3;
private T4 field4;
private String plain;
public GenericMultipleBuilder() {
}
private GenericMultipleBuilder(GenericMultiple<? extends T1, ? extends T2, ? extends T3, ? extends T4> v) {
this.field1 = v.field1();
this.field2 = v.field2();
this.field3 = v.field3();
this.field4 = v.field4();
this.plain = v.plain();
}
private GenericMultipleBuilder(GenericMultipleBuilder<? extends T1, ? extends T2, ? extends T3, ? extends T4> v) {
this.field1 = v.field1;
this.field2 = v.field2;
this.field3 = v.field3;
this.field4 = v.field4;
this.plain = v.plain;
}
public T1 field1() {
return field1;
}
public GenericMultipleBuilder<T1, T2, T3, T4> field1(T1 field1) {
if (field1 == null) {
throw new NullPointerException("field1");
}
this.field1 = field1;
return this;
}
public T2 field2() {
return field2;
}
public GenericMultipleBuilder<T1, T2, T3, T4> field2(T2 field2) {
if (field2 == null) {
throw new NullPointerException("field2");
}
this.field2 = field2;
return this;
}
public T3 field3() {
return field3;
}
public GenericMultipleBuilder<T1, T2, T3, T4> field3(T3 field3) {
if (field3 == null) {
throw new NullPointerException("field3");
}
this.field3 = field3;
return this;
}
public T4 field4() {
return field4;
}
public GenericMultipleBuilder<T1, T2, T3, T4> field4(T4 field4) {
if (field4 == null) {
throw new NullPointerException("field4");
}
this.field4 = field4;
return this;
}
public String plain() {
return plain;
}
public GenericMultipleBuilder<T1, T2, T3, T4> plain(String plain) {
if (plain == null) {
throw new NullPointerException("plain");
}
this.plain = plain;
return this;
}
public GenericMultipleBuilder<T1, T2, T3, T4> builder() {
return new GenericMultipleBuilder<T1, T2, T3, T4>(this);
}
public GenericMultiple<T1, T2, T3, T4> build() {
return new Value<T1, T2, T3, T4>(field1, field2, field3, field4, plain);
}
public static <T1, T2 extends Number, T3 extends Collection<T2>, T4 extends Iterable<T2> & Comparable<T4>> GenericMultipleBuilder<T1, T2, T3, T4> from(GenericMultiple<? extends T1, ? extends T2, ? extends T3, ? extends T4> v) {
return new GenericMultipleBuilder<T1, T2, T3, T4>(v);
}
public static <T1, T2 extends Number, T3 extends Collection<T2>, T4 extends Iterable<T2> & Comparable<T4>> GenericMultipleBuilder<T1, T2, T3, T4> from(GenericMultipleBuilder<? extends T1, ? extends T2, ? extends T3, ? extends T4> v) {
return new GenericMultipleBuilder<T1, T2, T3, T4>(v);
}
private static final class Value<T1, T2 extends Number, T3 extends Collection<T2>, T4 extends Iterable<T2> & Comparable<T4>> implements GenericMultiple<T1, T2, T3, T4> {
private final T1 field1;
private final T2 field2;
private final T3 field3;
private final T4 field4;
private final String plain;
private Value(@AutoMatter.Field("field1") T1 field1, @AutoMatter.Field("field2") T2 field2, @AutoMatter.Field("field3") T3 field3, @AutoMatter.Field("field4") T4 field4, @AutoMatter.Field("plain") String plain) {
if (field1 == null) {
throw new NullPointerException("field1");
}
if (field2 == null) {
throw new NullPointerException("field2");
}
if (field3 == null) {
throw new NullPointerException("field3");
}
if (field4 == null) {
throw new NullPointerException("field4");
}
if (plain == null) {
throw new NullPointerException("plain");
}
this.field1 = field1;
this.field2 = field2;
this.field3 = field3;
this.field4 = field4;
this.plain = plain;
}
@AutoMatter.Field
@Override
public T1 field1() {
return field1;
}
@AutoMatter.Field
@Override
public T2 field2() {
return field2;
}
@AutoMatter.Field
@Override
public T3 field3() {
return field3;
}
@AutoMatter.Field
@Override
public T4 field4() {
return field4;
}
@AutoMatter.Field
@Override
public String plain() {
return plain;
}
@Override
public GenericMultipleBuilder<T1, T2, T3, T4> builder() {
return new GenericMultipleBuilder<T1, T2, T3, T4>(this);
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof GenericMultiple)) {
return false;
}
final GenericMultiple<?, ?, ?, ?> that = (GenericMultiple<?, ?, ?, ?>) o;
if (field1 != null ? !field1.equals(that.field1()) : that.field1() != null) {
return false;
}
if (field2 != null ? !field2.equals(that.field2()) : that.field2() != null) {
return false;
}
if (field3 != null ? !field3.equals(that.field3()) : that.field3() != null) {
return false;
}
if (field4 != null ? !field4.equals(that.field4()) : that.field4() != null) {
return false;
}
if (plain != null ? !plain.equals(that.plain()) : that.plain() != null) {
return false;
}
return true;
}
@Override
public int hashCode() {
int result = 1;
long temp;
result = 31 * result + (this.field1 != null ? this.field1.hashCode() : 0);
result = 31 * result + (this.field2 != null ? this.field2.hashCode() : 0);
result = 31 * result + (this.field3 != null ? this.field3.hashCode() : 0);
result = 31 * result + (this.field4 != null ? this.field4.hashCode() : 0);
result = 31 * result + (this.plain != null ? this.plain.hashCode() : 0);
return result;
}
@Override
public String toString() {
return "GenericMultiple{" +
"field1=" + field1 +
", field2=" + field2 +
", field3=" + field3 +
", field4=" + field4 +
", plain=" + plain +
'}';
}
}
}