Don't generate the toBuilder constructor in AutoValue builders unless there actually is a toBuilder method.

Fixes https://github.com/google/auto/issues/437.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148800259
diff --git a/value/src/it/functional/src/test/java/com/google/auto/value/AutoValueTest.java b/value/src/it/functional/src/test/java/com/google/auto/value/AutoValueTest.java
index 5460ccf..333e6ec 100644
--- a/value/src/it/functional/src/test/java/com/google/auto/value/AutoValueTest.java
+++ b/value/src/it/functional/src/test/java/com/google/auto/value/AutoValueTest.java
@@ -1252,6 +1252,15 @@
     }
   }
 
+  @Test
+  public void testBasicWithBuilderHasOnlyOneConstructor() throws Exception {
+    Class<?> builderClass = AutoValue_AutoValueTest_BasicWithBuilder.Builder.class;
+    Constructor<?>[] constructors = builderClass.getDeclaredConstructors();
+    assertThat(constructors).hasLength(1);
+    Constructor<?> constructor = constructors[0];
+    assertThat(constructor.getParameterTypes()).isEmpty();
+  }
+
   @AutoValue
   public abstract static class EmptyWithBuilder {
     public static Builder builder() {
diff --git a/value/src/main/java/com/google/auto/value/processor/autovalue.vm b/value/src/main/java/com/google/auto/value/processor/autovalue.vm
index 69a32c7..1a5ed34 100644
--- a/value/src/main/java/com/google/auto/value/processor/autovalue.vm
+++ b/value/src/main/java/com/google/auto/value/processor/autovalue.vm
@@ -221,16 +221,20 @@
     Builder() {
     }
 
+  #if (!$toBuilderMethods.empty)
+
     private Builder(${origClass}${actualTypes} source) {
 
-  #foreach ($p in $props)
+    #foreach ($p in $props)
 
       this.$p = source.${p.getter}();
 
-  #end
+    #end
 
     }
 
+  #end
+
   #foreach ($p in $props)
 
     ## The following is either null or an instance of PropertyBuilderClassifier.PropertyBuilder