Primitive { public static AutoValue_Primitive.PrimitiveIntLazyStep lazyStep() { return AutoValue_Primitive.lazyStep(); }  abstract int primitiveInt(); abstract long primitiveLong(); abstract double primitiveDouble(); abstract float primitiveFloat(); abstract boolean primitiveBoolean(); abstract byte primitiveByte(); abstract char primitiveChar(); static AutoValue_Primitive.PrimitiveIntStep step(); static AutoValue_Primitive.PrimitiveIntLazyStep lazyStep();  }
@Test public void lazyStep() throws Exception { AutoValue_Primitive.BuilderLazyStep primitiveBuilder = Primitive.lazyStep() .primitiveInt(()->PRIMITIVE_INT) .primitiveLong(()->PRIMITIVE_LONG) .primitiveDouble(()->PRIMITIVE_DOUBLE) .primitiveFloat(()->PRIMITIVE_FLOAT) .primitiveBoolean(()->PRIMITIVE_BOOLEAN) .primitiveByte(()->PRIMITIVE_BYTE) .primitiveChar(()->PRIMITIVE_CHAR); Primitive buildOne = primitiveBuilder.build(); assertPrimitive(buildOne); Primitive buildTwo = primitiveBuilder.build(); assertEquals(buildOne, buildTwo); }