package foo; import com.google.common.base.Optional; import io.norberg.automatter.AutoMatter; import javax.annotation.Generated; @Generated("io.norberg.automatter.processor.AutoMatterProcessor") public final class GenericGuavaOptionalFieldsBuilder<T> { private Optional<T> foo; private Optional<T> bar; public GenericGuavaOptionalFieldsBuilder() { this.foo = Optional.absent(); } private GenericGuavaOptionalFieldsBuilder(GenericGuavaOptionalFields<? extends T> v) { @SuppressWarnings("unchecked") Optional<T> _foo = (Optional<T>) v.foo(); this.foo = _foo; @SuppressWarnings("unchecked") Optional<T> _bar = (Optional<T>) v.bar(); this.bar = _bar; } private GenericGuavaOptionalFieldsBuilder(GenericGuavaOptionalFieldsBuilder<? extends T> v) { @SuppressWarnings("unchecked") Optional<T> _foo = (Optional<T>) v.foo(); this.foo = _foo; @SuppressWarnings("unchecked") Optional<T> _bar = (Optional<T>) v.bar(); this.bar = _bar; } public Optional<T> foo() { return foo; } public GenericGuavaOptionalFieldsBuilder<T> foo(T foo) { return foo(Optional.fromNullable(foo)); } @SuppressWarnings("unchecked") public GenericGuavaOptionalFieldsBuilder<T> foo(Optional<? extends T> foo) { if (foo == null) { throw new NullPointerException("foo"); } this.foo = (Optional<T>) foo; return this; } public Optional<T> bar() { return bar; } public GenericGuavaOptionalFieldsBuilder<T> bar(T bar) { return bar(Optional.fromNullable(bar)); } @SuppressWarnings("unchecked") public GenericGuavaOptionalFieldsBuilder<T> bar(Optional<? extends T> bar) { this.bar = (Optional<T>) bar; return this; } public GenericGuavaOptionalFields<T> build() { return new Value<T>(foo, bar); } public static <T> GenericGuavaOptionalFieldsBuilder<T> from(GenericGuavaOptionalFields<? extends T> v) { return new GenericGuavaOptionalFieldsBuilder<T>(v); } public static <T> GenericGuavaOptionalFieldsBuilder<T> from(GenericGuavaOptionalFieldsBuilder<? extends T> v) { return new GenericGuavaOptionalFieldsBuilder<T>(v); } private static final class Value<T> implements GenericGuavaOptionalFields<T> { private final Optional<T> foo; private final Optional<T> bar; private Value(@AutoMatter.Field("foo") Optional<T> foo, @AutoMatter.Field("bar") Optional<T> bar) { if (foo == null) { throw new NullPointerException("foo"); } this.foo = foo; this.bar = bar; } @AutoMatter.Field @Override public Optional<T> foo() { return foo; } @AutoMatter.Field @Override public Optional<T> bar() { return bar; } public GenericGuavaOptionalFieldsBuilder<T> builder() { return new GenericGuavaOptionalFieldsBuilder<T>(this); } @Override public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof GenericGuavaOptionalFields)) { return false; } final GenericGuavaOptionalFields<?> that = (GenericGuavaOptionalFields<?>) o; if (foo != null ? !foo.equals(that.foo()) : that.foo() != null) { return false; } if (bar != null ? !bar.equals(that.bar()) : that.bar() != null) { return false; } return true; } @Override public int hashCode() { int result = 1; long temp; result = 31 * result + (this.foo != null ? this.foo.hashCode() : 0); result = 31 * result + (this.bar != null ? this.bar.hashCode() : 0); return result; } @Override public String toString() { return "GenericGuavaOptionalFields{" + "foo=" + foo + ", bar=" + bar + '}'; } } }