@Override
 com.google.api.services.bigquery.model.JobConfiguration toPb() {
   com.google.api.services.bigquery.model.JobConfiguration configurationPb =
       new com.google.api.services.bigquery.model.JobConfiguration();
   JobConfigurationQuery queryConfigurationPb = new JobConfigurationQuery();
   queryConfigurationPb.setQuery(query);
   configurationPb.setDryRun(dryRun());
   if (allowLargeResults != null) {
     queryConfigurationPb.setAllowLargeResults(allowLargeResults);
   }
   if (createDisposition != null) {
     queryConfigurationPb.setCreateDisposition(createDisposition.toString());
   }
   if (destinationTable != null) {
     queryConfigurationPb.setDestinationTable(destinationTable.toPb());
   }
   if (defaultDataset != null) {
     queryConfigurationPb.setDefaultDataset(defaultDataset.toPb());
   }
   if (flattenResults != null) {
     queryConfigurationPb.setFlattenResults(flattenResults);
   }
   if (priority != null) {
     queryConfigurationPb.setPriority(priority.toString());
   }
   if (tableDefinitions != null) {
     queryConfigurationPb.setTableDefinitions(
         Maps.transformValues(
             tableDefinitions, ExternalTableDefinition.TO_EXTERNAL_DATA_FUNCTION));
   }
   if (useQueryCache != null) {
     queryConfigurationPb.setUseQueryCache(useQueryCache);
   }
   if (userDefinedFunctions != null) {
     queryConfigurationPb.setUserDefinedFunctionResources(
         Lists.transform(userDefinedFunctions, UserDefinedFunction.TO_PB_FUNCTION));
   }
   if (writeDisposition != null) {
     queryConfigurationPb.setWriteDisposition(writeDisposition.toString());
   }
   return configurationPb.setQuery(queryConfigurationPb);
 }