# Generated builder example For the code shown in the [builder documentation](builders.md), the following is typical code AutoValue might generate: ```java import javax.annotation.Generated; @Generated("com.google.auto.value.processor.AutoValueProcessor") final class AutoValue_Animal extends Animal { private final String name; private final int numberOfLegs; private AutoValue_Animal( String name, int numberOfLegs) { this.name = name; this.numberOfLegs = numberOfLegs; } @Override String name() { return name; } @Override int numberOfLegs() { return numberOfLegs; } @Override public String toString() { return "Animal{" + "name=" + name + ", " + "numberOfLegs=" + numberOfLegs + "}"; } @Override public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof Animal) { Animal that = (Animal) o; return (this.name.equals(that.name())) && (this.numberOfLegs == that.numberOfLegs()); } return false; } @Override public int hashCode() { int h = 1; h *= 1000003; h ^= this.name.hashCode(); h *= 1000003; h ^= this.numberOfLegs; return h; } static final class Builder extends Animal.Builder { private String name; private Integer numberOfLegs; Builder() { } @Override Animal.Builder setName(String name) { if (name == null) { throw new NullPointerException("Null name"); } this.name = name; return this; } @Override Animal.Builder setNumberOfLegs(int numberOfLegs) { this.numberOfLegs = numberOfLegs; return this; } @Override Animal build() { String missing = ""; if (this.name == null) { missing += " name"; } if (this.numberOfLegs == null) { missing += " numberOfLegs"; } if (!missing.isEmpty()) { throw new IllegalStateException("Missing required properties:" + missing); } return new AutoValue_Animal( this.name, this.numberOfLegs); } } } ```