package generic_single;
import io.norberg.automatter.AutoMatter;
import javax.annotation.Generated;
@Generated("io.norberg.automatter.processor.AutoMatterProcessor")
public final class GenericSingleBuilder<T> {
private T thing;
public GenericSingleBuilder() {
}
private GenericSingleBuilder(GenericSingle<? extends T> v) {
this.thing = v.thing();
}
private GenericSingleBuilder(GenericSingleBuilder<? extends T> v) {
this.thing = v.thing;
}
public T thing() {
return thing;
}
public GenericSingleBuilder<T> thing(T thing) {
if (thing == null) {
throw new NullPointerException("thing");
}
this.thing = thing;
return this;
}
public GenericSingleBuilder<T> builder() {
return new GenericSingleBuilder<T>(this);
}
public GenericSingle<T> build() {
return new Value<T>(thing);
}
public static <T> GenericSingleBuilder<T> from(GenericSingle<? extends T> v) {
return new GenericSingleBuilder<T>(v);
}
public static <T> GenericSingleBuilder<T> from(GenericSingleBuilder<? extends T> v) {
return new GenericSingleBuilder<T>(v);
}
private static final class Value<T> implements GenericSingle<T> {
private final T thing;
private Value(@AutoMatter.Field("thing") T thing) {
if (thing == null) {
throw new NullPointerException("thing");
}
this.thing = thing;
}
@AutoMatter.Field
@Override
public T thing() {
return thing;
}
@Override
public GenericSingleBuilder<T> builder() {
return new GenericSingleBuilder<T>(this);
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof GenericSingle)) {
return false;
}
final GenericSingle<?> that = (GenericSingle<?>) o;
if (thing != null ? !thing.equals(that.thing()) : that.thing() != null) {
return false;
}
return true;
}
@Override
public int hashCode() {
int result = 1;
long temp;
result = 31 * result + (this.thing != null ? this.thing.hashCode() : 0);
return result;
}
@Override
public String toString() {
return "GenericSingle{" +
"thing=" + thing +
'}';
}
}
}