private void generateBuildMethod(JType builder, BuilderModel model) {
    if (!model.isSupportSubclassing()) {
      SourceTemplate buildMethod =
          newSourceTemplate()
              .var("b.type", model.getPojoType().getSimpleName())
              .var("buildName", model.getBuildPojoMethodName())
              .pl("public ${b.type} ${buildName}(){")
              .p("	return new ${b.type}(");

      boolean comma = false;
      for (BuilderPropertyModel property : model.getProperties()) {
        if (property.isReadOnly()) {
          continue;
        }
        if (comma) {
          buildMethod.p(",");
        }
        buildMethod.p("this." + property.getPropertyName());
        comma = true;
      }
      buildMethod.pl(");");
      buildMethod.pl("}");
      addMethod(builder, buildMethod.asMethodNodeSnippet(), model.isMarkGenerated());
    }
  }