]> source.dussan.org Git - sonarqube.git/commitdiff
Fix quality flaws
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Wed, 4 Feb 2015 10:46:12 +0000 (11:46 +0100)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Wed, 4 Feb 2015 10:46:12 +0000 (11:46 +0100)
18 files changed:
microbenchmark-template/src/main/java/org/sonar/microbenchmark/SerializationBenchmark.java
microbenchmark-template/src/test/java/org/sonar/microbenchmark/SerializationBenchmarkTest.java
server/sonar-server/src/main/java/org/sonar/server/computation/ComputationContext.java
server/sonar-server/src/main/java/org/sonar/server/computation/issue/IssueComputation.java
server/sonar-server/src/main/java/org/sonar/server/computation/step/ParseReportStep.java
server/sonar-server/src/test/java/org/sonar/server/computation/issue/IssueComputationTest.java
server/sonar-server/src/test/java/org/sonar/server/computation/step/ParseReportStepTest.java
server/sonar-server/src/test/java/org/sonar/server/computation/step/SendIssueNotificationsStepTest.java
sonar-batch-protocol/src/main/gen-java/org/sonar/batch/protocol/output/BatchOutput.java [deleted file]
sonar-batch-protocol/src/main/gen-java/org/sonar/batch/protocol/output/BatchReport.java [new file with mode: 0644]
sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/output/BatchOutputReader.java
sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/output/BatchOutputWriter.java
sonar-batch-protocol/src/main/protobuf/batch_output.proto [deleted file]
sonar-batch-protocol/src/main/protobuf/batch_report.proto [new file with mode: 0644]
sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/output/BatchOutputReaderTest.java
sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/output/BatchOutputWriterTest.java
sonar-batch/src/main/java/org/sonar/batch/report/ComponentsPublisher.java
sonar-batch/src/main/java/org/sonar/batch/report/IssuesPublisher.java

index 9d12e64998d96ed46a76e367246db46a67f67440..8c599a82c87f4a895e043c644e54503f92b0c3eb 100644 (file)
@@ -1,21 +1,21 @@
 /*
- * markdown-benchmark
- * Copyright (C) 2009 ${owner}
- * dev@sonar.codehaus.org
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
  *
- * This program is free software; you can redistribute it and/or
+ * SonarQube is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation; either
  * version 3 of the License, or (at your option) any later version.
  *
- * This program is distributed in the hope that it will be useful,
+ * SonarQube is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
  *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
 package org.sonar.microbenchmark;
 
@@ -33,7 +33,7 @@ import org.openjdk.jmh.runner.RunnerException;
 import org.openjdk.jmh.runner.options.Options;
 import org.openjdk.jmh.runner.options.OptionsBuilder;
 import org.sonar.batch.protocol.Constants;
-import org.sonar.batch.protocol.output.BatchOutput;
+import org.sonar.batch.protocol.output.BatchReport;
 
 import java.io.BufferedOutputStream;
 import java.io.BufferedWriter;
@@ -85,7 +85,7 @@ public class SerializationBenchmark {
     // An alternative can be http://stackoverflow.com/a/21870564/229031
     try (OutputStream out = new BufferedOutputStream(new FileOutputStream(outputFile, false))) {
       for (int i = 0; i < 10000; i++) {
-        BatchOutput.ReportIssue.Builder issueBuilder = BatchOutput.ReportIssue.newBuilder();
+        BatchReport.Issue.Builder issueBuilder = BatchReport.Issue.newBuilder();
         issueBuilder.setUuid("UUID_" + i);
         issueBuilder.setSeverity(Constants.Severity.BLOCKER);
         issueBuilder.setMsg("this is the message of issue " + i);
index 05be832fd8cae6bee79cc9cf5c79587125dcd576..33f424389324e87d8d89f68726202954d439c630 100644 (file)
@@ -1,3 +1,22 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
 package org.sonar.microbenchmark;
 
 import org.apache.commons.io.FileUtils;
index 74e4788460b7a479da0a73b310c74ef648128661..a7709c8e139a71903bd5f720e45e0c38763a103e 100644 (file)
@@ -20,7 +20,8 @@
 
 package org.sonar.server.computation;
 
-import org.sonar.batch.protocol.output.BatchOutput;
+import com.google.common.base.Preconditions;
+import org.sonar.batch.protocol.output.BatchReport;
 import org.sonar.core.component.ComponentDto;
 import org.sonar.core.computation.db.AnalysisReportDto;
 import org.sonar.server.computation.step.ParseReportStep;
@@ -33,7 +34,7 @@ public class ComputationContext {
   /**
    * Cache of analysis date as it can be accessed several times
    */
-  private BatchOutput.ReportMetadata reportMetadata = null;
+  private BatchReport.Metadata reportMetadata = null;
 
   public ComputationContext(AnalysisReportDto reportDto, ComponentDto project) {
     this.reportDto = reportDto;
@@ -48,14 +49,12 @@ public class ComputationContext {
     return project;
   }
 
-  public BatchOutput.ReportMetadata getReportMetadata() {
-    if (reportMetadata == null) {
-      throw new IllegalStateException("Report metadata is available after execution of " + ParseReportStep.class);
-    }
+  public BatchReport.Metadata getReportMetadata() {
+    Preconditions.checkState(reportMetadata != null, "Report metadata is available after execution of " + ParseReportStep.class);
     return reportMetadata;
   }
 
-  public void setReportMetadata(BatchOutput.ReportMetadata m) {
+  public void setReportMetadata(BatchReport.Metadata m) {
     this.reportMetadata = m;
   }
 }
index 4a75701e905e00a06c230fc37058b8c7c35b0525..c6288054115ae1e8f2ea95fb3191732056cf56d2 100644 (file)
@@ -25,7 +25,7 @@ import org.sonar.api.issue.internal.FieldDiffs;
 import org.sonar.api.rule.RuleKey;
 import org.sonar.api.utils.Duration;
 import org.sonar.api.utils.KeyValueFormat;
-import org.sonar.batch.protocol.output.BatchOutput;
+import org.sonar.batch.protocol.output.BatchReport;
 import org.sonar.core.rule.RuleDto;
 import org.sonar.server.computation.ComputationContext;
 import org.sonar.server.util.cache.DiskCache;
@@ -47,9 +47,9 @@ public class IssueComputation {
     this.diskIssuesAppender = issueCache.newAppender();
   }
 
-  public void processComponentIssues(ComputationContext context, String componentUuid, Iterable<BatchOutput.ReportIssue> issues) {
+  public void processComponentIssues(ComputationContext context, String componentUuid, Iterable<BatchReport.Issue> issues) {
     linesCache.init(componentUuid);
-    for (BatchOutput.ReportIssue reportIssue : issues) {
+    for (BatchReport.Issue reportIssue : issues) {
       DefaultIssue issue = toDefaultIssue(context, componentUuid, reportIssue);
       if (issue.isNew()) {
         guessAuthor(issue);
@@ -62,7 +62,7 @@ public class IssueComputation {
     linesCache.clear();
   }
 
-  private DefaultIssue toDefaultIssue(ComputationContext context, String componentUuid, BatchOutput.ReportIssue issue) {
+  private DefaultIssue toDefaultIssue(ComputationContext context, String componentUuid, BatchReport.Issue issue) {
     DefaultIssue target = new DefaultIssue();
     target.setKey(issue.getUuid());
     target.setComponentUuid(componentUuid);
index c98359fa9f26f69dc4cfa1f560985b8bf5eba0c5..6df408a0aacc643229ff42f5058159caaeadc303 100644 (file)
@@ -25,8 +25,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.sonar.api.resources.Qualifiers;
 import org.sonar.api.utils.TempFolder;
-import org.sonar.batch.protocol.output.BatchOutput;
 import org.sonar.batch.protocol.output.BatchOutputReader;
+import org.sonar.batch.protocol.output.BatchReport;
 import org.sonar.core.computation.db.AnalysisReportDto;
 import org.sonar.core.persistence.DbSession;
 import org.sonar.core.persistence.MyBatis;
@@ -64,7 +64,7 @@ public class ParseReportStep implements ComputationStep {
 
       // prepare parsing of report
       BatchOutputReader reader = new BatchOutputReader(reportDir);
-      BatchOutput.ReportMetadata reportMetadata = reader.readMetadata();
+      BatchReport.Metadata reportMetadata = reader.readMetadata();
       context.setReportMetadata(reportMetadata);
 
       // and parse!
@@ -91,7 +91,7 @@ public class ParseReportStep implements ComputationStep {
   }
 
   private void recursivelyProcessComponent(BatchOutputReader reportReader, ComputationContext context, int componentRef) {
-    BatchOutput.ReportComponent component = reportReader.readComponent(componentRef);
+    BatchReport.Component component = reportReader.readComponent(componentRef);
     issueComputation.processComponentIssues(context, component.getUuid(), reportReader.readComponentIssues(componentRef));
 
     for (Integer childRef : component.getChildRefsList()) {
index 0e9b3dc8106fcbfdcc543923db6a6fa644fef21a..93a8ee4229057c8546bfb876a5b5c3b5efdd7a8f 100644 (file)
@@ -30,7 +30,7 @@ import org.sonar.api.issue.Issue;
 import org.sonar.api.issue.internal.DefaultIssue;
 import org.sonar.api.rule.RuleKey;
 import org.sonar.api.utils.System2;
-import org.sonar.batch.protocol.output.BatchOutput;
+import org.sonar.batch.protocol.output.BatchReport;
 import org.sonar.core.rule.RuleDto;
 import org.sonar.server.computation.ComputationContext;
 
@@ -54,7 +54,7 @@ public class IssueComputationTest {
   SourceLinesCache lineCache = mock(SourceLinesCache.class);
   ScmAccountCache scmAccountCache = mock(ScmAccountCache.class);
   RuleDto rule = new RuleDto().setRepositoryKey(RULE_KEY.repository()).setRuleKey(RULE_KEY.rule());
-  BatchOutput.ReportIssue.Builder inputIssue = BatchOutput.ReportIssue.newBuilder()
+  BatchReport.Issue.Builder inputIssue = BatchReport.Issue.newBuilder()
     .setUuid("ISSUE_A")
     .setRuleRepository(RULE_KEY.repository())
     .setRuleKey(RULE_KEY.rule())
index 54fbcf1fb9ff4af0ffabe069194945e89d02d324..4808564f18298e7f5c0c91a6feb80c2579a86fd1 100644 (file)
@@ -25,8 +25,8 @@ import org.junit.rules.TemporaryFolder;
 import org.sonar.api.utils.ZipUtils;
 import org.sonar.api.utils.internal.DefaultTempFolder;
 import org.sonar.batch.protocol.Constants;
-import org.sonar.batch.protocol.output.BatchOutput;
 import org.sonar.batch.protocol.output.BatchOutputWriter;
+import org.sonar.batch.protocol.output.BatchReport;
 import org.sonar.core.component.ComponentDto;
 import org.sonar.core.computation.db.AnalysisReportDto;
 import org.sonar.core.persistence.DbSession;
@@ -65,9 +65,9 @@ public class ParseReportStepTest {
     step.execute(context);
 
     // verify that all components are processed (currently only for issues)
-    verify(issueComputation).processComponentIssues(context, "PROJECT_UUID", Collections.<BatchOutput.ReportIssue>emptyList());
-    verify(issueComputation).processComponentIssues(context, "FILE1_UUID", Collections.<BatchOutput.ReportIssue>emptyList());
-    verify(issueComputation).processComponentIssues(context, "FILE2_UUID", Collections.<BatchOutput.ReportIssue>emptyList());
+    verify(issueComputation).processComponentIssues(context, "PROJECT_UUID", Collections.<BatchReport.Issue>emptyList());
+    verify(issueComputation).processComponentIssues(context, "FILE1_UUID", Collections.<BatchReport.Issue>emptyList());
+    verify(issueComputation).processComponentIssues(context, "FILE2_UUID", Collections.<BatchReport.Issue>emptyList());
     verify(issueComputation).afterReportProcessing();
     assertThat(context.getReportMetadata().getRootComponentRef()).isEqualTo(1);
   }
@@ -76,24 +76,24 @@ public class ParseReportStepTest {
     File dir = temp.newFolder();
     // project and 2 files
     BatchOutputWriter writer = new BatchOutputWriter(dir);
-    writer.writeMetadata(BatchOutput.ReportMetadata.newBuilder()
+    writer.writeMetadata(BatchReport.Metadata.newBuilder()
       .setRootComponentRef(1)
       .setProjectKey("PROJECT_KEY")
       .setAnalysisDate(150000000L)
       .build());
-    writer.writeComponent(BatchOutput.ReportComponent.newBuilder()
+    writer.writeComponent(BatchReport.Component.newBuilder()
       .setRef(1)
       .setType(Constants.ComponentType.PROJECT)
       .setUuid("PROJECT_UUID")
       .addChildRefs(2)
       .addChildRefs(3)
       .build());
-    writer.writeComponent(BatchOutput.ReportComponent.newBuilder()
+    writer.writeComponent(BatchReport.Component.newBuilder()
       .setRef(2)
       .setType(Constants.ComponentType.FILE)
       .setUuid("FILE1_UUID")
       .build());
-    writer.writeComponent(BatchOutput.ReportComponent.newBuilder()
+    writer.writeComponent(BatchReport.Component.newBuilder()
       .setRef(3)
       .setType(Constants.ComponentType.FILE)
       .setUuid("FILE2_UUID")
index cf784e682d02a28ead2d417071ffd2c674907476..9f0f7b982d793ed65f6cd6e5a18e9b1b7a0fbc0c 100644 (file)
@@ -27,7 +27,7 @@ import org.sonar.api.issue.internal.DefaultIssue;
 import org.sonar.api.notifications.Notification;
 import org.sonar.api.rule.Severity;
 import org.sonar.api.utils.System2;
-import org.sonar.batch.protocol.output.BatchOutput;
+import org.sonar.batch.protocol.output.BatchReport;
 import org.sonar.server.computation.ComputationContext;
 import org.sonar.server.computation.issue.IssueCache;
 import org.sonar.server.computation.issue.RuleCache;
@@ -65,7 +65,7 @@ public class SendIssueNotificationsStepTest {
     issueCache.newAppender().append(new DefaultIssue().setSeverity(Severity.BLOCKER)).close();
 
     when(context.getProject().uuid()).thenReturn("PROJECT_UUID");
-    when(context.getReportMetadata()).thenReturn(BatchOutput.ReportMetadata.newBuilder().build());
+    when(context.getReportMetadata()).thenReturn(BatchReport.Metadata.newBuilder().build());
     when(notifService.hasProjectSubscribersForTypes("PROJECT_UUID", SendIssueNotificationsStep.NOTIF_TYPES)).thenReturn(true);
 
     SendIssueNotificationsStep step = new SendIssueNotificationsStep(issueCache, ruleCache, notifService);
diff --git a/sonar-batch-protocol/src/main/gen-java/org/sonar/batch/protocol/output/BatchOutput.java b/sonar-batch-protocol/src/main/gen-java/org/sonar/batch/protocol/output/BatchOutput.java
deleted file mode 100644 (file)
index d42f92e..0000000
+++ /dev/null
@@ -1,6470 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: batch_output.proto
-
-package org.sonar.batch.protocol.output;
-
-public final class BatchOutput {
-  private BatchOutput() {}
-  public static void registerAllExtensions(
-      com.google.protobuf.ExtensionRegistry registry) {
-  }
-  public interface ReportMetadataOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:ReportMetadata)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>optional int64 analysis_date = 1;</code>
-     */
-    boolean hasAnalysisDate();
-    /**
-     * <code>optional int64 analysis_date = 1;</code>
-     */
-    long getAnalysisDate();
-
-    /**
-     * <code>optional string project_key = 2;</code>
-     */
-    boolean hasProjectKey();
-    /**
-     * <code>optional string project_key = 2;</code>
-     */
-    java.lang.String getProjectKey();
-    /**
-     * <code>optional string project_key = 2;</code>
-     */
-    com.google.protobuf.ByteString
-        getProjectKeyBytes();
-
-    /**
-     * <code>optional int32 root_component_ref = 3;</code>
-     */
-    boolean hasRootComponentRef();
-    /**
-     * <code>optional int32 root_component_ref = 3;</code>
-     */
-    int getRootComponentRef();
-  }
-  /**
-   * Protobuf type {@code ReportMetadata}
-   */
-  public static final class ReportMetadata extends
-      com.google.protobuf.GeneratedMessage implements
-      // @@protoc_insertion_point(message_implements:ReportMetadata)
-      ReportMetadataOrBuilder {
-    // Use ReportMetadata.newBuilder() to construct.
-    private ReportMetadata(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private ReportMetadata(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final ReportMetadata defaultInstance;
-    public static ReportMetadata getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    public ReportMetadata getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ReportMetadata(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 8: {
-              bitField0_ |= 0x00000001;
-              analysisDate_ = input.readInt64();
-              break;
-            }
-            case 18: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000002;
-              projectKey_ = bs;
-              break;
-            }
-            case 24: {
-              bitField0_ |= 0x00000004;
-              rootComponentRef_ = input.readInt32();
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return org.sonar.batch.protocol.output.BatchOutput.internal_static_ReportMetadata_descriptor;
-    }
-
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return org.sonar.batch.protocol.output.BatchOutput.internal_static_ReportMetadata_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              org.sonar.batch.protocol.output.BatchOutput.ReportMetadata.class, org.sonar.batch.protocol.output.BatchOutput.ReportMetadata.Builder.class);
-    }
-
-    public static com.google.protobuf.Parser<ReportMetadata> PARSER =
-        new com.google.protobuf.AbstractParser<ReportMetadata>() {
-      public ReportMetadata parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ReportMetadata(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<ReportMetadata> getParserForType() {
-      return PARSER;
-    }
-
-    private int bitField0_;
-    public static final int ANALYSIS_DATE_FIELD_NUMBER = 1;
-    private long analysisDate_;
-    /**
-     * <code>optional int64 analysis_date = 1;</code>
-     */
-    public boolean hasAnalysisDate() {
-      return ((bitField0_ & 0x00000001) == 0x00000001);
-    }
-    /**
-     * <code>optional int64 analysis_date = 1;</code>
-     */
-    public long getAnalysisDate() {
-      return analysisDate_;
-    }
-
-    public static final int PROJECT_KEY_FIELD_NUMBER = 2;
-    private java.lang.Object projectKey_;
-    /**
-     * <code>optional string project_key = 2;</code>
-     */
-    public boolean hasProjectKey() {
-      return ((bitField0_ & 0x00000002) == 0x00000002);
-    }
-    /**
-     * <code>optional string project_key = 2;</code>
-     */
-    public java.lang.String getProjectKey() {
-      java.lang.Object ref = projectKey_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          projectKey_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string project_key = 2;</code>
-     */
-    public com.google.protobuf.ByteString
-        getProjectKeyBytes() {
-      java.lang.Object ref = projectKey_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        projectKey_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int ROOT_COMPONENT_REF_FIELD_NUMBER = 3;
-    private int rootComponentRef_;
-    /**
-     * <code>optional int32 root_component_ref = 3;</code>
-     */
-    public boolean hasRootComponentRef() {
-      return ((bitField0_ & 0x00000004) == 0x00000004);
-    }
-    /**
-     * <code>optional int32 root_component_ref = 3;</code>
-     */
-    public int getRootComponentRef() {
-      return rootComponentRef_;
-    }
-
-    private void initFields() {
-      analysisDate_ = 0L;
-      projectKey_ = "";
-      rootComponentRef_ = 0;
-    }
-    private byte memoizedIsInitialized = -1;
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      getSerializedSize();
-      if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeInt64(1, analysisDate_);
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeBytes(2, getProjectKeyBytes());
-      }
-      if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        output.writeInt32(3, rootComponentRef_);
-      }
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public int getSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt64Size(1, analysisDate_);
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(2, getProjectKeyBytes());
-      }
-      if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(3, rootComponentRef_);
-      }
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
-      return size;
-    }
-
-    private static final long serialVersionUID = 0L;
-    @java.lang.Override
-    protected java.lang.Object writeReplace()
-        throws java.io.ObjectStreamException {
-      return super.writeReplace();
-    }
-
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportMetadata parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportMetadata parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportMetadata parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportMetadata parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportMetadata parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportMetadata parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportMetadata parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportMetadata parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportMetadata parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportMetadata parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder(org.sonar.batch.protocol.output.BatchOutput.ReportMetadata prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    public Builder toBuilder() { return newBuilder(this); }
-
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code ReportMetadata}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:ReportMetadata)
-        org.sonar.batch.protocol.output.BatchOutput.ReportMetadataOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return org.sonar.batch.protocol.output.BatchOutput.internal_static_ReportMetadata_descriptor;
-      }
-
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return org.sonar.batch.protocol.output.BatchOutput.internal_static_ReportMetadata_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                org.sonar.batch.protocol.output.BatchOutput.ReportMetadata.class, org.sonar.batch.protocol.output.BatchOutput.ReportMetadata.Builder.class);
-      }
-
-      // Construct using org.sonar.batch.protocol.output.BatchOutput.ReportMetadata.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
-        }
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      public Builder clear() {
-        super.clear();
-        analysisDate_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00000001);
-        projectKey_ = "";
-        bitField0_ = (bitField0_ & ~0x00000002);
-        rootComponentRef_ = 0;
-        bitField0_ = (bitField0_ & ~0x00000004);
-        return this;
-      }
-
-      public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return org.sonar.batch.protocol.output.BatchOutput.internal_static_ReportMetadata_descriptor;
-      }
-
-      public org.sonar.batch.protocol.output.BatchOutput.ReportMetadata getDefaultInstanceForType() {
-        return org.sonar.batch.protocol.output.BatchOutput.ReportMetadata.getDefaultInstance();
-      }
-
-      public org.sonar.batch.protocol.output.BatchOutput.ReportMetadata build() {
-        org.sonar.batch.protocol.output.BatchOutput.ReportMetadata result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      public org.sonar.batch.protocol.output.BatchOutput.ReportMetadata buildPartial() {
-        org.sonar.batch.protocol.output.BatchOutput.ReportMetadata result = new org.sonar.batch.protocol.output.BatchOutput.ReportMetadata(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.analysisDate_ = analysisDate_;
-        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.projectKey_ = projectKey_;
-        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
-          to_bitField0_ |= 0x00000004;
-        }
-        result.rootComponentRef_ = rootComponentRef_;
-        result.bitField0_ = to_bitField0_;
-        onBuilt();
-        return result;
-      }
-
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.sonar.batch.protocol.output.BatchOutput.ReportMetadata) {
-          return mergeFrom((org.sonar.batch.protocol.output.BatchOutput.ReportMetadata)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(org.sonar.batch.protocol.output.BatchOutput.ReportMetadata other) {
-        if (other == org.sonar.batch.protocol.output.BatchOutput.ReportMetadata.getDefaultInstance()) return this;
-        if (other.hasAnalysisDate()) {
-          setAnalysisDate(other.getAnalysisDate());
-        }
-        if (other.hasProjectKey()) {
-          bitField0_ |= 0x00000002;
-          projectKey_ = other.projectKey_;
-          onChanged();
-        }
-        if (other.hasRootComponentRef()) {
-          setRootComponentRef(other.getRootComponentRef());
-        }
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        org.sonar.batch.protocol.output.BatchOutput.ReportMetadata parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.sonar.batch.protocol.output.BatchOutput.ReportMetadata) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private long analysisDate_ ;
-      /**
-       * <code>optional int64 analysis_date = 1;</code>
-       */
-      public boolean hasAnalysisDate() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
-       * <code>optional int64 analysis_date = 1;</code>
-       */
-      public long getAnalysisDate() {
-        return analysisDate_;
-      }
-      /**
-       * <code>optional int64 analysis_date = 1;</code>
-       */
-      public Builder setAnalysisDate(long value) {
-        bitField0_ |= 0x00000001;
-        analysisDate_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional int64 analysis_date = 1;</code>
-       */
-      public Builder clearAnalysisDate() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        analysisDate_ = 0L;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object projectKey_ = "";
-      /**
-       * <code>optional string project_key = 2;</code>
-       */
-      public boolean hasProjectKey() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
-      }
-      /**
-       * <code>optional string project_key = 2;</code>
-       */
-      public java.lang.String getProjectKey() {
-        java.lang.Object ref = projectKey_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            projectKey_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string project_key = 2;</code>
-       */
-      public com.google.protobuf.ByteString
-          getProjectKeyBytes() {
-        java.lang.Object ref = projectKey_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          projectKey_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string project_key = 2;</code>
-       */
-      public Builder setProjectKey(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        projectKey_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string project_key = 2;</code>
-       */
-      public Builder clearProjectKey() {
-        bitField0_ = (bitField0_ & ~0x00000002);
-        projectKey_ = getDefaultInstance().getProjectKey();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string project_key = 2;</code>
-       */
-      public Builder setProjectKeyBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        projectKey_ = value;
-        onChanged();
-        return this;
-      }
-
-      private int rootComponentRef_ ;
-      /**
-       * <code>optional int32 root_component_ref = 3;</code>
-       */
-      public boolean hasRootComponentRef() {
-        return ((bitField0_ & 0x00000004) == 0x00000004);
-      }
-      /**
-       * <code>optional int32 root_component_ref = 3;</code>
-       */
-      public int getRootComponentRef() {
-        return rootComponentRef_;
-      }
-      /**
-       * <code>optional int32 root_component_ref = 3;</code>
-       */
-      public Builder setRootComponentRef(int value) {
-        bitField0_ |= 0x00000004;
-        rootComponentRef_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional int32 root_component_ref = 3;</code>
-       */
-      public Builder clearRootComponentRef() {
-        bitField0_ = (bitField0_ & ~0x00000004);
-        rootComponentRef_ = 0;
-        onChanged();
-        return this;
-      }
-
-      // @@protoc_insertion_point(builder_scope:ReportMetadata)
-    }
-
-    static {
-      defaultInstance = new ReportMetadata(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:ReportMetadata)
-  }
-
-  public interface ReportComponentOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:ReportComponent)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>optional int32 ref = 1;</code>
-     */
-    boolean hasRef();
-    /**
-     * <code>optional int32 ref = 1;</code>
-     */
-    int getRef();
-
-    /**
-     * <code>optional string path = 2;</code>
-     */
-    boolean hasPath();
-    /**
-     * <code>optional string path = 2;</code>
-     */
-    java.lang.String getPath();
-    /**
-     * <code>optional string path = 2;</code>
-     */
-    com.google.protobuf.ByteString
-        getPathBytes();
-
-    /**
-     * <code>optional string name = 3;</code>
-     */
-    boolean hasName();
-    /**
-     * <code>optional string name = 3;</code>
-     */
-    java.lang.String getName();
-    /**
-     * <code>optional string name = 3;</code>
-     */
-    com.google.protobuf.ByteString
-        getNameBytes();
-
-    /**
-     * <code>optional .ComponentType type = 4;</code>
-     */
-    boolean hasType();
-    /**
-     * <code>optional .ComponentType type = 4;</code>
-     */
-    org.sonar.batch.protocol.Constants.ComponentType getType();
-
-    /**
-     * <code>optional bool is_test = 5;</code>
-     */
-    boolean hasIsTest();
-    /**
-     * <code>optional bool is_test = 5;</code>
-     */
-    boolean getIsTest();
-
-    /**
-     * <code>optional string language = 6;</code>
-     */
-    boolean hasLanguage();
-    /**
-     * <code>optional string language = 6;</code>
-     */
-    java.lang.String getLanguage();
-    /**
-     * <code>optional string language = 6;</code>
-     */
-    com.google.protobuf.ByteString
-        getLanguageBytes();
-
-    /**
-     * <code>repeated int32 child_refs = 7;</code>
-     */
-    java.util.List<java.lang.Integer> getChildRefsList();
-    /**
-     * <code>repeated int32 child_refs = 7;</code>
-     */
-    int getChildRefsCount();
-    /**
-     * <code>repeated int32 child_refs = 7;</code>
-     */
-    int getChildRefs(int index);
-
-    /**
-     * <code>optional int32 snapshot_id = 8;</code>
-     *
-     * <pre>
-     * temporary fields during development of computation stack
-     * </pre>
-     */
-    boolean hasSnapshotId();
-    /**
-     * <code>optional int32 snapshot_id = 8;</code>
-     *
-     * <pre>
-     * temporary fields during development of computation stack
-     * </pre>
-     */
-    int getSnapshotId();
-
-    /**
-     * <code>optional string uuid = 9;</code>
-     */
-    boolean hasUuid();
-    /**
-     * <code>optional string uuid = 9;</code>
-     */
-    java.lang.String getUuid();
-    /**
-     * <code>optional string uuid = 9;</code>
-     */
-    com.google.protobuf.ByteString
-        getUuidBytes();
-  }
-  /**
-   * Protobuf type {@code ReportComponent}
-   */
-  public static final class ReportComponent extends
-      com.google.protobuf.GeneratedMessage implements
-      // @@protoc_insertion_point(message_implements:ReportComponent)
-      ReportComponentOrBuilder {
-    // Use ReportComponent.newBuilder() to construct.
-    private ReportComponent(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private ReportComponent(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final ReportComponent defaultInstance;
-    public static ReportComponent getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    public ReportComponent getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ReportComponent(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 8: {
-              bitField0_ |= 0x00000001;
-              ref_ = input.readInt32();
-              break;
-            }
-            case 18: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000002;
-              path_ = bs;
-              break;
-            }
-            case 26: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000004;
-              name_ = bs;
-              break;
-            }
-            case 32: {
-              int rawValue = input.readEnum();
-              org.sonar.batch.protocol.Constants.ComponentType value = org.sonar.batch.protocol.Constants.ComponentType.valueOf(rawValue);
-              if (value == null) {
-                unknownFields.mergeVarintField(4, rawValue);
-              } else {
-                bitField0_ |= 0x00000008;
-                type_ = value;
-              }
-              break;
-            }
-            case 40: {
-              bitField0_ |= 0x00000010;
-              isTest_ = input.readBool();
-              break;
-            }
-            case 50: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000020;
-              language_ = bs;
-              break;
-            }
-            case 56: {
-              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
-                childRefs_ = new java.util.ArrayList<java.lang.Integer>();
-                mutable_bitField0_ |= 0x00000040;
-              }
-              childRefs_.add(input.readInt32());
-              break;
-            }
-            case 58: {
-              int length = input.readRawVarint32();
-              int limit = input.pushLimit(length);
-              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040) && input.getBytesUntilLimit() > 0) {
-                childRefs_ = new java.util.ArrayList<java.lang.Integer>();
-                mutable_bitField0_ |= 0x00000040;
-              }
-              while (input.getBytesUntilLimit() > 0) {
-                childRefs_.add(input.readInt32());
-              }
-              input.popLimit(limit);
-              break;
-            }
-            case 64: {
-              bitField0_ |= 0x00000040;
-              snapshotId_ = input.readInt32();
-              break;
-            }
-            case 74: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000080;
-              uuid_ = bs;
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
-          childRefs_ = java.util.Collections.unmodifiableList(childRefs_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return org.sonar.batch.protocol.output.BatchOutput.internal_static_ReportComponent_descriptor;
-    }
-
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return org.sonar.batch.protocol.output.BatchOutput.internal_static_ReportComponent_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              org.sonar.batch.protocol.output.BatchOutput.ReportComponent.class, org.sonar.batch.protocol.output.BatchOutput.ReportComponent.Builder.class);
-    }
-
-    public static com.google.protobuf.Parser<ReportComponent> PARSER =
-        new com.google.protobuf.AbstractParser<ReportComponent>() {
-      public ReportComponent parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ReportComponent(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<ReportComponent> getParserForType() {
-      return PARSER;
-    }
-
-    private int bitField0_;
-    public static final int REF_FIELD_NUMBER = 1;
-    private int ref_;
-    /**
-     * <code>optional int32 ref = 1;</code>
-     */
-    public boolean hasRef() {
-      return ((bitField0_ & 0x00000001) == 0x00000001);
-    }
-    /**
-     * <code>optional int32 ref = 1;</code>
-     */
-    public int getRef() {
-      return ref_;
-    }
-
-    public static final int PATH_FIELD_NUMBER = 2;
-    private java.lang.Object path_;
-    /**
-     * <code>optional string path = 2;</code>
-     */
-    public boolean hasPath() {
-      return ((bitField0_ & 0x00000002) == 0x00000002);
-    }
-    /**
-     * <code>optional string path = 2;</code>
-     */
-    public java.lang.String getPath() {
-      java.lang.Object ref = path_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          path_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string path = 2;</code>
-     */
-    public com.google.protobuf.ByteString
-        getPathBytes() {
-      java.lang.Object ref = path_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        path_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int NAME_FIELD_NUMBER = 3;
-    private java.lang.Object name_;
-    /**
-     * <code>optional string name = 3;</code>
-     */
-    public boolean hasName() {
-      return ((bitField0_ & 0x00000004) == 0x00000004);
-    }
-    /**
-     * <code>optional string name = 3;</code>
-     */
-    public java.lang.String getName() {
-      java.lang.Object ref = name_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          name_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string name = 3;</code>
-     */
-    public com.google.protobuf.ByteString
-        getNameBytes() {
-      java.lang.Object ref = name_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        name_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int TYPE_FIELD_NUMBER = 4;
-    private org.sonar.batch.protocol.Constants.ComponentType type_;
-    /**
-     * <code>optional .ComponentType type = 4;</code>
-     */
-    public boolean hasType() {
-      return ((bitField0_ & 0x00000008) == 0x00000008);
-    }
-    /**
-     * <code>optional .ComponentType type = 4;</code>
-     */
-    public org.sonar.batch.protocol.Constants.ComponentType getType() {
-      return type_;
-    }
-
-    public static final int IS_TEST_FIELD_NUMBER = 5;
-    private boolean isTest_;
-    /**
-     * <code>optional bool is_test = 5;</code>
-     */
-    public boolean hasIsTest() {
-      return ((bitField0_ & 0x00000010) == 0x00000010);
-    }
-    /**
-     * <code>optional bool is_test = 5;</code>
-     */
-    public boolean getIsTest() {
-      return isTest_;
-    }
-
-    public static final int LANGUAGE_FIELD_NUMBER = 6;
-    private java.lang.Object language_;
-    /**
-     * <code>optional string language = 6;</code>
-     */
-    public boolean hasLanguage() {
-      return ((bitField0_ & 0x00000020) == 0x00000020);
-    }
-    /**
-     * <code>optional string language = 6;</code>
-     */
-    public java.lang.String getLanguage() {
-      java.lang.Object ref = language_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          language_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string language = 6;</code>
-     */
-    public com.google.protobuf.ByteString
-        getLanguageBytes() {
-      java.lang.Object ref = language_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        language_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int CHILD_REFS_FIELD_NUMBER = 7;
-    private java.util.List<java.lang.Integer> childRefs_;
-    /**
-     * <code>repeated int32 child_refs = 7;</code>
-     */
-    public java.util.List<java.lang.Integer>
-        getChildRefsList() {
-      return childRefs_;
-    }
-    /**
-     * <code>repeated int32 child_refs = 7;</code>
-     */
-    public int getChildRefsCount() {
-      return childRefs_.size();
-    }
-    /**
-     * <code>repeated int32 child_refs = 7;</code>
-     */
-    public int getChildRefs(int index) {
-      return childRefs_.get(index);
-    }
-
-    public static final int SNAPSHOT_ID_FIELD_NUMBER = 8;
-    private int snapshotId_;
-    /**
-     * <code>optional int32 snapshot_id = 8;</code>
-     *
-     * <pre>
-     * temporary fields during development of computation stack
-     * </pre>
-     */
-    public boolean hasSnapshotId() {
-      return ((bitField0_ & 0x00000040) == 0x00000040);
-    }
-    /**
-     * <code>optional int32 snapshot_id = 8;</code>
-     *
-     * <pre>
-     * temporary fields during development of computation stack
-     * </pre>
-     */
-    public int getSnapshotId() {
-      return snapshotId_;
-    }
-
-    public static final int UUID_FIELD_NUMBER = 9;
-    private java.lang.Object uuid_;
-    /**
-     * <code>optional string uuid = 9;</code>
-     */
-    public boolean hasUuid() {
-      return ((bitField0_ & 0x00000080) == 0x00000080);
-    }
-    /**
-     * <code>optional string uuid = 9;</code>
-     */
-    public java.lang.String getUuid() {
-      java.lang.Object ref = uuid_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          uuid_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string uuid = 9;</code>
-     */
-    public com.google.protobuf.ByteString
-        getUuidBytes() {
-      java.lang.Object ref = uuid_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        uuid_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    private void initFields() {
-      ref_ = 0;
-      path_ = "";
-      name_ = "";
-      type_ = org.sonar.batch.protocol.Constants.ComponentType.PROJECT;
-      isTest_ = false;
-      language_ = "";
-      childRefs_ = java.util.Collections.emptyList();
-      snapshotId_ = 0;
-      uuid_ = "";
-    }
-    private byte memoizedIsInitialized = -1;
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      getSerializedSize();
-      if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeInt32(1, ref_);
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeBytes(2, getPathBytes());
-      }
-      if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        output.writeBytes(3, getNameBytes());
-      }
-      if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        output.writeEnum(4, type_.getNumber());
-      }
-      if (((bitField0_ & 0x00000010) == 0x00000010)) {
-        output.writeBool(5, isTest_);
-      }
-      if (((bitField0_ & 0x00000020) == 0x00000020)) {
-        output.writeBytes(6, getLanguageBytes());
-      }
-      for (int i = 0; i < childRefs_.size(); i++) {
-        output.writeInt32(7, childRefs_.get(i));
-      }
-      if (((bitField0_ & 0x00000040) == 0x00000040)) {
-        output.writeInt32(8, snapshotId_);
-      }
-      if (((bitField0_ & 0x00000080) == 0x00000080)) {
-        output.writeBytes(9, getUuidBytes());
-      }
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public int getSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(1, ref_);
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(2, getPathBytes());
-      }
-      if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(3, getNameBytes());
-      }
-      if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(4, type_.getNumber());
-      }
-      if (((bitField0_ & 0x00000010) == 0x00000010)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(5, isTest_);
-      }
-      if (((bitField0_ & 0x00000020) == 0x00000020)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(6, getLanguageBytes());
-      }
-      {
-        int dataSize = 0;
-        for (int i = 0; i < childRefs_.size(); i++) {
-          dataSize += com.google.protobuf.CodedOutputStream
-            .computeInt32SizeNoTag(childRefs_.get(i));
-        }
-        size += dataSize;
-        size += 1 * getChildRefsList().size();
-      }
-      if (((bitField0_ & 0x00000040) == 0x00000040)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(8, snapshotId_);
-      }
-      if (((bitField0_ & 0x00000080) == 0x00000080)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(9, getUuidBytes());
-      }
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
-      return size;
-    }
-
-    private static final long serialVersionUID = 0L;
-    @java.lang.Override
-    protected java.lang.Object writeReplace()
-        throws java.io.ObjectStreamException {
-      return super.writeReplace();
-    }
-
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportComponent parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportComponent parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportComponent parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportComponent parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportComponent parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportComponent parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportComponent parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportComponent parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportComponent parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportComponent parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder(org.sonar.batch.protocol.output.BatchOutput.ReportComponent prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    public Builder toBuilder() { return newBuilder(this); }
-
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code ReportComponent}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:ReportComponent)
-        org.sonar.batch.protocol.output.BatchOutput.ReportComponentOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return org.sonar.batch.protocol.output.BatchOutput.internal_static_ReportComponent_descriptor;
-      }
-
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return org.sonar.batch.protocol.output.BatchOutput.internal_static_ReportComponent_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                org.sonar.batch.protocol.output.BatchOutput.ReportComponent.class, org.sonar.batch.protocol.output.BatchOutput.ReportComponent.Builder.class);
-      }
-
-      // Construct using org.sonar.batch.protocol.output.BatchOutput.ReportComponent.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
-        }
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      public Builder clear() {
-        super.clear();
-        ref_ = 0;
-        bitField0_ = (bitField0_ & ~0x00000001);
-        path_ = "";
-        bitField0_ = (bitField0_ & ~0x00000002);
-        name_ = "";
-        bitField0_ = (bitField0_ & ~0x00000004);
-        type_ = org.sonar.batch.protocol.Constants.ComponentType.PROJECT;
-        bitField0_ = (bitField0_ & ~0x00000008);
-        isTest_ = false;
-        bitField0_ = (bitField0_ & ~0x00000010);
-        language_ = "";
-        bitField0_ = (bitField0_ & ~0x00000020);
-        childRefs_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000040);
-        snapshotId_ = 0;
-        bitField0_ = (bitField0_ & ~0x00000080);
-        uuid_ = "";
-        bitField0_ = (bitField0_ & ~0x00000100);
-        return this;
-      }
-
-      public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return org.sonar.batch.protocol.output.BatchOutput.internal_static_ReportComponent_descriptor;
-      }
-
-      public org.sonar.batch.protocol.output.BatchOutput.ReportComponent getDefaultInstanceForType() {
-        return org.sonar.batch.protocol.output.BatchOutput.ReportComponent.getDefaultInstance();
-      }
-
-      public org.sonar.batch.protocol.output.BatchOutput.ReportComponent build() {
-        org.sonar.batch.protocol.output.BatchOutput.ReportComponent result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      public org.sonar.batch.protocol.output.BatchOutput.ReportComponent buildPartial() {
-        org.sonar.batch.protocol.output.BatchOutput.ReportComponent result = new org.sonar.batch.protocol.output.BatchOutput.ReportComponent(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.ref_ = ref_;
-        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.path_ = path_;
-        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
-          to_bitField0_ |= 0x00000004;
-        }
-        result.name_ = name_;
-        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
-          to_bitField0_ |= 0x00000008;
-        }
-        result.type_ = type_;
-        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
-          to_bitField0_ |= 0x00000010;
-        }
-        result.isTest_ = isTest_;
-        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
-          to_bitField0_ |= 0x00000020;
-        }
-        result.language_ = language_;
-        if (((bitField0_ & 0x00000040) == 0x00000040)) {
-          childRefs_ = java.util.Collections.unmodifiableList(childRefs_);
-          bitField0_ = (bitField0_ & ~0x00000040);
-        }
-        result.childRefs_ = childRefs_;
-        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
-          to_bitField0_ |= 0x00000040;
-        }
-        result.snapshotId_ = snapshotId_;
-        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
-          to_bitField0_ |= 0x00000080;
-        }
-        result.uuid_ = uuid_;
-        result.bitField0_ = to_bitField0_;
-        onBuilt();
-        return result;
-      }
-
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.sonar.batch.protocol.output.BatchOutput.ReportComponent) {
-          return mergeFrom((org.sonar.batch.protocol.output.BatchOutput.ReportComponent)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(org.sonar.batch.protocol.output.BatchOutput.ReportComponent other) {
-        if (other == org.sonar.batch.protocol.output.BatchOutput.ReportComponent.getDefaultInstance()) return this;
-        if (other.hasRef()) {
-          setRef(other.getRef());
-        }
-        if (other.hasPath()) {
-          bitField0_ |= 0x00000002;
-          path_ = other.path_;
-          onChanged();
-        }
-        if (other.hasName()) {
-          bitField0_ |= 0x00000004;
-          name_ = other.name_;
-          onChanged();
-        }
-        if (other.hasType()) {
-          setType(other.getType());
-        }
-        if (other.hasIsTest()) {
-          setIsTest(other.getIsTest());
-        }
-        if (other.hasLanguage()) {
-          bitField0_ |= 0x00000020;
-          language_ = other.language_;
-          onChanged();
-        }
-        if (!other.childRefs_.isEmpty()) {
-          if (childRefs_.isEmpty()) {
-            childRefs_ = other.childRefs_;
-            bitField0_ = (bitField0_ & ~0x00000040);
-          } else {
-            ensureChildRefsIsMutable();
-            childRefs_.addAll(other.childRefs_);
-          }
-          onChanged();
-        }
-        if (other.hasSnapshotId()) {
-          setSnapshotId(other.getSnapshotId());
-        }
-        if (other.hasUuid()) {
-          bitField0_ |= 0x00000100;
-          uuid_ = other.uuid_;
-          onChanged();
-        }
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        org.sonar.batch.protocol.output.BatchOutput.ReportComponent parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.sonar.batch.protocol.output.BatchOutput.ReportComponent) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private int ref_ ;
-      /**
-       * <code>optional int32 ref = 1;</code>
-       */
-      public boolean hasRef() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
-       * <code>optional int32 ref = 1;</code>
-       */
-      public int getRef() {
-        return ref_;
-      }
-      /**
-       * <code>optional int32 ref = 1;</code>
-       */
-      public Builder setRef(int value) {
-        bitField0_ |= 0x00000001;
-        ref_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional int32 ref = 1;</code>
-       */
-      public Builder clearRef() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        ref_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object path_ = "";
-      /**
-       * <code>optional string path = 2;</code>
-       */
-      public boolean hasPath() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
-      }
-      /**
-       * <code>optional string path = 2;</code>
-       */
-      public java.lang.String getPath() {
-        java.lang.Object ref = path_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            path_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string path = 2;</code>
-       */
-      public com.google.protobuf.ByteString
-          getPathBytes() {
-        java.lang.Object ref = path_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          path_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string path = 2;</code>
-       */
-      public Builder setPath(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        path_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string path = 2;</code>
-       */
-      public Builder clearPath() {
-        bitField0_ = (bitField0_ & ~0x00000002);
-        path_ = getDefaultInstance().getPath();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string path = 2;</code>
-       */
-      public Builder setPathBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        path_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object name_ = "";
-      /**
-       * <code>optional string name = 3;</code>
-       */
-      public boolean hasName() {
-        return ((bitField0_ & 0x00000004) == 0x00000004);
-      }
-      /**
-       * <code>optional string name = 3;</code>
-       */
-      public java.lang.String getName() {
-        java.lang.Object ref = name_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            name_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string name = 3;</code>
-       */
-      public com.google.protobuf.ByteString
-          getNameBytes() {
-        java.lang.Object ref = name_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          name_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string name = 3;</code>
-       */
-      public Builder setName(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000004;
-        name_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string name = 3;</code>
-       */
-      public Builder clearName() {
-        bitField0_ = (bitField0_ & ~0x00000004);
-        name_ = getDefaultInstance().getName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string name = 3;</code>
-       */
-      public Builder setNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000004;
-        name_ = value;
-        onChanged();
-        return this;
-      }
-
-      private org.sonar.batch.protocol.Constants.ComponentType type_ = org.sonar.batch.protocol.Constants.ComponentType.PROJECT;
-      /**
-       * <code>optional .ComponentType type = 4;</code>
-       */
-      public boolean hasType() {
-        return ((bitField0_ & 0x00000008) == 0x00000008);
-      }
-      /**
-       * <code>optional .ComponentType type = 4;</code>
-       */
-      public org.sonar.batch.protocol.Constants.ComponentType getType() {
-        return type_;
-      }
-      /**
-       * <code>optional .ComponentType type = 4;</code>
-       */
-      public Builder setType(org.sonar.batch.protocol.Constants.ComponentType value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        bitField0_ |= 0x00000008;
-        type_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional .ComponentType type = 4;</code>
-       */
-      public Builder clearType() {
-        bitField0_ = (bitField0_ & ~0x00000008);
-        type_ = org.sonar.batch.protocol.Constants.ComponentType.PROJECT;
-        onChanged();
-        return this;
-      }
-
-      private boolean isTest_ ;
-      /**
-       * <code>optional bool is_test = 5;</code>
-       */
-      public boolean hasIsTest() {
-        return ((bitField0_ & 0x00000010) == 0x00000010);
-      }
-      /**
-       * <code>optional bool is_test = 5;</code>
-       */
-      public boolean getIsTest() {
-        return isTest_;
-      }
-      /**
-       * <code>optional bool is_test = 5;</code>
-       */
-      public Builder setIsTest(boolean value) {
-        bitField0_ |= 0x00000010;
-        isTest_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional bool is_test = 5;</code>
-       */
-      public Builder clearIsTest() {
-        bitField0_ = (bitField0_ & ~0x00000010);
-        isTest_ = false;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object language_ = "";
-      /**
-       * <code>optional string language = 6;</code>
-       */
-      public boolean hasLanguage() {
-        return ((bitField0_ & 0x00000020) == 0x00000020);
-      }
-      /**
-       * <code>optional string language = 6;</code>
-       */
-      public java.lang.String getLanguage() {
-        java.lang.Object ref = language_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            language_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string language = 6;</code>
-       */
-      public com.google.protobuf.ByteString
-          getLanguageBytes() {
-        java.lang.Object ref = language_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          language_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string language = 6;</code>
-       */
-      public Builder setLanguage(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000020;
-        language_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string language = 6;</code>
-       */
-      public Builder clearLanguage() {
-        bitField0_ = (bitField0_ & ~0x00000020);
-        language_ = getDefaultInstance().getLanguage();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string language = 6;</code>
-       */
-      public Builder setLanguageBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000020;
-        language_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.util.List<java.lang.Integer> childRefs_ = java.util.Collections.emptyList();
-      private void ensureChildRefsIsMutable() {
-        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
-          childRefs_ = new java.util.ArrayList<java.lang.Integer>(childRefs_);
-          bitField0_ |= 0x00000040;
-         }
-      }
-      /**
-       * <code>repeated int32 child_refs = 7;</code>
-       */
-      public java.util.List<java.lang.Integer>
-          getChildRefsList() {
-        return java.util.Collections.unmodifiableList(childRefs_);
-      }
-      /**
-       * <code>repeated int32 child_refs = 7;</code>
-       */
-      public int getChildRefsCount() {
-        return childRefs_.size();
-      }
-      /**
-       * <code>repeated int32 child_refs = 7;</code>
-       */
-      public int getChildRefs(int index) {
-        return childRefs_.get(index);
-      }
-      /**
-       * <code>repeated int32 child_refs = 7;</code>
-       */
-      public Builder setChildRefs(
-          int index, int value) {
-        ensureChildRefsIsMutable();
-        childRefs_.set(index, value);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated int32 child_refs = 7;</code>
-       */
-      public Builder addChildRefs(int value) {
-        ensureChildRefsIsMutable();
-        childRefs_.add(value);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated int32 child_refs = 7;</code>
-       */
-      public Builder addAllChildRefs(
-          java.lang.Iterable<? extends java.lang.Integer> values) {
-        ensureChildRefsIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, childRefs_);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated int32 child_refs = 7;</code>
-       */
-      public Builder clearChildRefs() {
-        childRefs_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000040);
-        onChanged();
-        return this;
-      }
-
-      private int snapshotId_ ;
-      /**
-       * <code>optional int32 snapshot_id = 8;</code>
-       *
-       * <pre>
-       * temporary fields during development of computation stack
-       * </pre>
-       */
-      public boolean hasSnapshotId() {
-        return ((bitField0_ & 0x00000080) == 0x00000080);
-      }
-      /**
-       * <code>optional int32 snapshot_id = 8;</code>
-       *
-       * <pre>
-       * temporary fields during development of computation stack
-       * </pre>
-       */
-      public int getSnapshotId() {
-        return snapshotId_;
-      }
-      /**
-       * <code>optional int32 snapshot_id = 8;</code>
-       *
-       * <pre>
-       * temporary fields during development of computation stack
-       * </pre>
-       */
-      public Builder setSnapshotId(int value) {
-        bitField0_ |= 0x00000080;
-        snapshotId_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional int32 snapshot_id = 8;</code>
-       *
-       * <pre>
-       * temporary fields during development of computation stack
-       * </pre>
-       */
-      public Builder clearSnapshotId() {
-        bitField0_ = (bitField0_ & ~0x00000080);
-        snapshotId_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object uuid_ = "";
-      /**
-       * <code>optional string uuid = 9;</code>
-       */
-      public boolean hasUuid() {
-        return ((bitField0_ & 0x00000100) == 0x00000100);
-      }
-      /**
-       * <code>optional string uuid = 9;</code>
-       */
-      public java.lang.String getUuid() {
-        java.lang.Object ref = uuid_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            uuid_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string uuid = 9;</code>
-       */
-      public com.google.protobuf.ByteString
-          getUuidBytes() {
-        java.lang.Object ref = uuid_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          uuid_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string uuid = 9;</code>
-       */
-      public Builder setUuid(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000100;
-        uuid_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string uuid = 9;</code>
-       */
-      public Builder clearUuid() {
-        bitField0_ = (bitField0_ & ~0x00000100);
-        uuid_ = getDefaultInstance().getUuid();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string uuid = 9;</code>
-       */
-      public Builder setUuidBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000100;
-        uuid_ = value;
-        onChanged();
-        return this;
-      }
-
-      // @@protoc_insertion_point(builder_scope:ReportComponent)
-    }
-
-    static {
-      defaultInstance = new ReportComponent(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:ReportComponent)
-  }
-
-  public interface ReportIssueOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:ReportIssue)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>optional string rule_repository = 1;</code>
-     */
-    boolean hasRuleRepository();
-    /**
-     * <code>optional string rule_repository = 1;</code>
-     */
-    java.lang.String getRuleRepository();
-    /**
-     * <code>optional string rule_repository = 1;</code>
-     */
-    com.google.protobuf.ByteString
-        getRuleRepositoryBytes();
-
-    /**
-     * <code>optional string rule_key = 2;</code>
-     */
-    boolean hasRuleKey();
-    /**
-     * <code>optional string rule_key = 2;</code>
-     */
-    java.lang.String getRuleKey();
-    /**
-     * <code>optional string rule_key = 2;</code>
-     */
-    com.google.protobuf.ByteString
-        getRuleKeyBytes();
-
-    /**
-     * <code>optional int32 line = 3;</code>
-     */
-    boolean hasLine();
-    /**
-     * <code>optional int32 line = 3;</code>
-     */
-    int getLine();
-
-    /**
-     * <code>optional string msg = 4;</code>
-     */
-    boolean hasMsg();
-    /**
-     * <code>optional string msg = 4;</code>
-     */
-    java.lang.String getMsg();
-    /**
-     * <code>optional string msg = 4;</code>
-     */
-    com.google.protobuf.ByteString
-        getMsgBytes();
-
-    /**
-     * <code>optional .Severity severity = 5;</code>
-     */
-    boolean hasSeverity();
-    /**
-     * <code>optional .Severity severity = 5;</code>
-     */
-    org.sonar.batch.protocol.Constants.Severity getSeverity();
-
-    /**
-     * <code>repeated string tags = 6;</code>
-     */
-    com.google.protobuf.ProtocolStringList
-        getTagsList();
-    /**
-     * <code>repeated string tags = 6;</code>
-     */
-    int getTagsCount();
-    /**
-     * <code>repeated string tags = 6;</code>
-     */
-    java.lang.String getTags(int index);
-    /**
-     * <code>repeated string tags = 6;</code>
-     */
-    com.google.protobuf.ByteString
-        getTagsBytes(int index);
-
-    /**
-     * <code>optional double effort_to_fix = 7;</code>
-     *
-     * <pre>
-     * temporary fields during development of computation stack
-     * </pre>
-     */
-    boolean hasEffortToFix();
-    /**
-     * <code>optional double effort_to_fix = 7;</code>
-     *
-     * <pre>
-     * temporary fields during development of computation stack
-     * </pre>
-     */
-    double getEffortToFix();
-
-    /**
-     * <code>optional bool is_new = 8;</code>
-     */
-    boolean hasIsNew();
-    /**
-     * <code>optional bool is_new = 8;</code>
-     */
-    boolean getIsNew();
-
-    /**
-     * <code>optional string uuid = 9;</code>
-     */
-    boolean hasUuid();
-    /**
-     * <code>optional string uuid = 9;</code>
-     */
-    java.lang.String getUuid();
-    /**
-     * <code>optional string uuid = 9;</code>
-     */
-    com.google.protobuf.ByteString
-        getUuidBytes();
-
-    /**
-     * <code>optional int64 debt_in_minutes = 10;</code>
-     */
-    boolean hasDebtInMinutes();
-    /**
-     * <code>optional int64 debt_in_minutes = 10;</code>
-     */
-    long getDebtInMinutes();
-
-    /**
-     * <code>optional string resolution = 11;</code>
-     */
-    boolean hasResolution();
-    /**
-     * <code>optional string resolution = 11;</code>
-     */
-    java.lang.String getResolution();
-    /**
-     * <code>optional string resolution = 11;</code>
-     */
-    com.google.protobuf.ByteString
-        getResolutionBytes();
-
-    /**
-     * <code>optional string status = 12;</code>
-     */
-    boolean hasStatus();
-    /**
-     * <code>optional string status = 12;</code>
-     */
-    java.lang.String getStatus();
-    /**
-     * <code>optional string status = 12;</code>
-     */
-    com.google.protobuf.ByteString
-        getStatusBytes();
-
-    /**
-     * <code>optional string checksum = 13;</code>
-     */
-    boolean hasChecksum();
-    /**
-     * <code>optional string checksum = 13;</code>
-     */
-    java.lang.String getChecksum();
-    /**
-     * <code>optional string checksum = 13;</code>
-     */
-    com.google.protobuf.ByteString
-        getChecksumBytes();
-
-    /**
-     * <code>optional bool manual_severity = 14;</code>
-     */
-    boolean hasManualSeverity();
-    /**
-     * <code>optional bool manual_severity = 14;</code>
-     */
-    boolean getManualSeverity();
-
-    /**
-     * <code>optional string reporter = 15;</code>
-     */
-    boolean hasReporter();
-    /**
-     * <code>optional string reporter = 15;</code>
-     */
-    java.lang.String getReporter();
-    /**
-     * <code>optional string reporter = 15;</code>
-     */
-    com.google.protobuf.ByteString
-        getReporterBytes();
-
-    /**
-     * <code>optional string assignee = 16;</code>
-     */
-    boolean hasAssignee();
-    /**
-     * <code>optional string assignee = 16;</code>
-     */
-    java.lang.String getAssignee();
-    /**
-     * <code>optional string assignee = 16;</code>
-     */
-    com.google.protobuf.ByteString
-        getAssigneeBytes();
-
-    /**
-     * <code>optional string action_plan_key = 17;</code>
-     */
-    boolean hasActionPlanKey();
-    /**
-     * <code>optional string action_plan_key = 17;</code>
-     */
-    java.lang.String getActionPlanKey();
-    /**
-     * <code>optional string action_plan_key = 17;</code>
-     */
-    com.google.protobuf.ByteString
-        getActionPlanKeyBytes();
-
-    /**
-     * <code>optional string attributes = 18;</code>
-     */
-    boolean hasAttributes();
-    /**
-     * <code>optional string attributes = 18;</code>
-     */
-    java.lang.String getAttributes();
-    /**
-     * <code>optional string attributes = 18;</code>
-     */
-    com.google.protobuf.ByteString
-        getAttributesBytes();
-
-    /**
-     * <code>optional string author_login = 19;</code>
-     */
-    boolean hasAuthorLogin();
-    /**
-     * <code>optional string author_login = 19;</code>
-     */
-    java.lang.String getAuthorLogin();
-    /**
-     * <code>optional string author_login = 19;</code>
-     */
-    com.google.protobuf.ByteString
-        getAuthorLoginBytes();
-
-    /**
-     * <code>optional int64 creation_date = 20;</code>
-     */
-    boolean hasCreationDate();
-    /**
-     * <code>optional int64 creation_date = 20;</code>
-     */
-    long getCreationDate();
-
-    /**
-     * <code>optional int64 close_date = 21;</code>
-     */
-    boolean hasCloseDate();
-    /**
-     * <code>optional int64 close_date = 21;</code>
-     */
-    long getCloseDate();
-
-    /**
-     * <code>optional int64 update_date = 22;</code>
-     */
-    boolean hasUpdateDate();
-    /**
-     * <code>optional int64 update_date = 22;</code>
-     */
-    long getUpdateDate();
-
-    /**
-     * <code>optional int64 selected_at = 23;</code>
-     */
-    boolean hasSelectedAt();
-    /**
-     * <code>optional int64 selected_at = 23;</code>
-     */
-    long getSelectedAt();
-
-    /**
-     * <code>optional string diff_fields = 24;</code>
-     */
-    boolean hasDiffFields();
-    /**
-     * <code>optional string diff_fields = 24;</code>
-     */
-    java.lang.String getDiffFields();
-    /**
-     * <code>optional string diff_fields = 24;</code>
-     */
-    com.google.protobuf.ByteString
-        getDiffFieldsBytes();
-
-    /**
-     * <code>optional bool is_changed = 25;</code>
-     */
-    boolean hasIsChanged();
-    /**
-     * <code>optional bool is_changed = 25;</code>
-     */
-    boolean getIsChanged();
-
-    /**
-     * <code>optional bool must_send_notification = 26;</code>
-     */
-    boolean hasMustSendNotification();
-    /**
-     * <code>optional bool must_send_notification = 26;</code>
-     */
-    boolean getMustSendNotification();
-  }
-  /**
-   * Protobuf type {@code ReportIssue}
-   */
-  public static final class ReportIssue extends
-      com.google.protobuf.GeneratedMessage implements
-      // @@protoc_insertion_point(message_implements:ReportIssue)
-      ReportIssueOrBuilder {
-    // Use ReportIssue.newBuilder() to construct.
-    private ReportIssue(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private ReportIssue(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final ReportIssue defaultInstance;
-    public static ReportIssue getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    public ReportIssue getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ReportIssue(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 10: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000001;
-              ruleRepository_ = bs;
-              break;
-            }
-            case 18: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000002;
-              ruleKey_ = bs;
-              break;
-            }
-            case 24: {
-              bitField0_ |= 0x00000004;
-              line_ = input.readInt32();
-              break;
-            }
-            case 34: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000008;
-              msg_ = bs;
-              break;
-            }
-            case 40: {
-              int rawValue = input.readEnum();
-              org.sonar.batch.protocol.Constants.Severity value = org.sonar.batch.protocol.Constants.Severity.valueOf(rawValue);
-              if (value == null) {
-                unknownFields.mergeVarintField(5, rawValue);
-              } else {
-                bitField0_ |= 0x00000010;
-                severity_ = value;
-              }
-              break;
-            }
-            case 50: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
-                tags_ = new com.google.protobuf.LazyStringArrayList();
-                mutable_bitField0_ |= 0x00000020;
-              }
-              tags_.add(bs);
-              break;
-            }
-            case 57: {
-              bitField0_ |= 0x00000020;
-              effortToFix_ = input.readDouble();
-              break;
-            }
-            case 64: {
-              bitField0_ |= 0x00000040;
-              isNew_ = input.readBool();
-              break;
-            }
-            case 74: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000080;
-              uuid_ = bs;
-              break;
-            }
-            case 80: {
-              bitField0_ |= 0x00000100;
-              debtInMinutes_ = input.readInt64();
-              break;
-            }
-            case 90: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000200;
-              resolution_ = bs;
-              break;
-            }
-            case 98: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000400;
-              status_ = bs;
-              break;
-            }
-            case 106: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000800;
-              checksum_ = bs;
-              break;
-            }
-            case 112: {
-              bitField0_ |= 0x00001000;
-              manualSeverity_ = input.readBool();
-              break;
-            }
-            case 122: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00002000;
-              reporter_ = bs;
-              break;
-            }
-            case 130: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00004000;
-              assignee_ = bs;
-              break;
-            }
-            case 138: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00008000;
-              actionPlanKey_ = bs;
-              break;
-            }
-            case 146: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00010000;
-              attributes_ = bs;
-              break;
-            }
-            case 154: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00020000;
-              authorLogin_ = bs;
-              break;
-            }
-            case 160: {
-              bitField0_ |= 0x00040000;
-              creationDate_ = input.readInt64();
-              break;
-            }
-            case 168: {
-              bitField0_ |= 0x00080000;
-              closeDate_ = input.readInt64();
-              break;
-            }
-            case 176: {
-              bitField0_ |= 0x00100000;
-              updateDate_ = input.readInt64();
-              break;
-            }
-            case 184: {
-              bitField0_ |= 0x00200000;
-              selectedAt_ = input.readInt64();
-              break;
-            }
-            case 194: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00400000;
-              diffFields_ = bs;
-              break;
-            }
-            case 200: {
-              bitField0_ |= 0x00800000;
-              isChanged_ = input.readBool();
-              break;
-            }
-            case 208: {
-              bitField0_ |= 0x01000000;
-              mustSendNotification_ = input.readBool();
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
-          tags_ = tags_.getUnmodifiableView();
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return org.sonar.batch.protocol.output.BatchOutput.internal_static_ReportIssue_descriptor;
-    }
-
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return org.sonar.batch.protocol.output.BatchOutput.internal_static_ReportIssue_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              org.sonar.batch.protocol.output.BatchOutput.ReportIssue.class, org.sonar.batch.protocol.output.BatchOutput.ReportIssue.Builder.class);
-    }
-
-    public static com.google.protobuf.Parser<ReportIssue> PARSER =
-        new com.google.protobuf.AbstractParser<ReportIssue>() {
-      public ReportIssue parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ReportIssue(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<ReportIssue> getParserForType() {
-      return PARSER;
-    }
-
-    private int bitField0_;
-    public static final int RULE_REPOSITORY_FIELD_NUMBER = 1;
-    private java.lang.Object ruleRepository_;
-    /**
-     * <code>optional string rule_repository = 1;</code>
-     */
-    public boolean hasRuleRepository() {
-      return ((bitField0_ & 0x00000001) == 0x00000001);
-    }
-    /**
-     * <code>optional string rule_repository = 1;</code>
-     */
-    public java.lang.String getRuleRepository() {
-      java.lang.Object ref = ruleRepository_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          ruleRepository_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string rule_repository = 1;</code>
-     */
-    public com.google.protobuf.ByteString
-        getRuleRepositoryBytes() {
-      java.lang.Object ref = ruleRepository_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        ruleRepository_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int RULE_KEY_FIELD_NUMBER = 2;
-    private java.lang.Object ruleKey_;
-    /**
-     * <code>optional string rule_key = 2;</code>
-     */
-    public boolean hasRuleKey() {
-      return ((bitField0_ & 0x00000002) == 0x00000002);
-    }
-    /**
-     * <code>optional string rule_key = 2;</code>
-     */
-    public java.lang.String getRuleKey() {
-      java.lang.Object ref = ruleKey_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          ruleKey_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string rule_key = 2;</code>
-     */
-    public com.google.protobuf.ByteString
-        getRuleKeyBytes() {
-      java.lang.Object ref = ruleKey_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        ruleKey_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int LINE_FIELD_NUMBER = 3;
-    private int line_;
-    /**
-     * <code>optional int32 line = 3;</code>
-     */
-    public boolean hasLine() {
-      return ((bitField0_ & 0x00000004) == 0x00000004);
-    }
-    /**
-     * <code>optional int32 line = 3;</code>
-     */
-    public int getLine() {
-      return line_;
-    }
-
-    public static final int MSG_FIELD_NUMBER = 4;
-    private java.lang.Object msg_;
-    /**
-     * <code>optional string msg = 4;</code>
-     */
-    public boolean hasMsg() {
-      return ((bitField0_ & 0x00000008) == 0x00000008);
-    }
-    /**
-     * <code>optional string msg = 4;</code>
-     */
-    public java.lang.String getMsg() {
-      java.lang.Object ref = msg_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          msg_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string msg = 4;</code>
-     */
-    public com.google.protobuf.ByteString
-        getMsgBytes() {
-      java.lang.Object ref = msg_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        msg_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int SEVERITY_FIELD_NUMBER = 5;
-    private org.sonar.batch.protocol.Constants.Severity severity_;
-    /**
-     * <code>optional .Severity severity = 5;</code>
-     */
-    public boolean hasSeverity() {
-      return ((bitField0_ & 0x00000010) == 0x00000010);
-    }
-    /**
-     * <code>optional .Severity severity = 5;</code>
-     */
-    public org.sonar.batch.protocol.Constants.Severity getSeverity() {
-      return severity_;
-    }
-
-    public static final int TAGS_FIELD_NUMBER = 6;
-    private com.google.protobuf.LazyStringList tags_;
-    /**
-     * <code>repeated string tags = 6;</code>
-     */
-    public com.google.protobuf.ProtocolStringList
-        getTagsList() {
-      return tags_;
-    }
-    /**
-     * <code>repeated string tags = 6;</code>
-     */
-    public int getTagsCount() {
-      return tags_.size();
-    }
-    /**
-     * <code>repeated string tags = 6;</code>
-     */
-    public java.lang.String getTags(int index) {
-      return tags_.get(index);
-    }
-    /**
-     * <code>repeated string tags = 6;</code>
-     */
-    public com.google.protobuf.ByteString
-        getTagsBytes(int index) {
-      return tags_.getByteString(index);
-    }
-
-    public static final int EFFORT_TO_FIX_FIELD_NUMBER = 7;
-    private double effortToFix_;
-    /**
-     * <code>optional double effort_to_fix = 7;</code>
-     *
-     * <pre>
-     * temporary fields during development of computation stack
-     * </pre>
-     */
-    public boolean hasEffortToFix() {
-      return ((bitField0_ & 0x00000020) == 0x00000020);
-    }
-    /**
-     * <code>optional double effort_to_fix = 7;</code>
-     *
-     * <pre>
-     * temporary fields during development of computation stack
-     * </pre>
-     */
-    public double getEffortToFix() {
-      return effortToFix_;
-    }
-
-    public static final int IS_NEW_FIELD_NUMBER = 8;
-    private boolean isNew_;
-    /**
-     * <code>optional bool is_new = 8;</code>
-     */
-    public boolean hasIsNew() {
-      return ((bitField0_ & 0x00000040) == 0x00000040);
-    }
-    /**
-     * <code>optional bool is_new = 8;</code>
-     */
-    public boolean getIsNew() {
-      return isNew_;
-    }
-
-    public static final int UUID_FIELD_NUMBER = 9;
-    private java.lang.Object uuid_;
-    /**
-     * <code>optional string uuid = 9;</code>
-     */
-    public boolean hasUuid() {
-      return ((bitField0_ & 0x00000080) == 0x00000080);
-    }
-    /**
-     * <code>optional string uuid = 9;</code>
-     */
-    public java.lang.String getUuid() {
-      java.lang.Object ref = uuid_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          uuid_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string uuid = 9;</code>
-     */
-    public com.google.protobuf.ByteString
-        getUuidBytes() {
-      java.lang.Object ref = uuid_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        uuid_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int DEBT_IN_MINUTES_FIELD_NUMBER = 10;
-    private long debtInMinutes_;
-    /**
-     * <code>optional int64 debt_in_minutes = 10;</code>
-     */
-    public boolean hasDebtInMinutes() {
-      return ((bitField0_ & 0x00000100) == 0x00000100);
-    }
-    /**
-     * <code>optional int64 debt_in_minutes = 10;</code>
-     */
-    public long getDebtInMinutes() {
-      return debtInMinutes_;
-    }
-
-    public static final int RESOLUTION_FIELD_NUMBER = 11;
-    private java.lang.Object resolution_;
-    /**
-     * <code>optional string resolution = 11;</code>
-     */
-    public boolean hasResolution() {
-      return ((bitField0_ & 0x00000200) == 0x00000200);
-    }
-    /**
-     * <code>optional string resolution = 11;</code>
-     */
-    public java.lang.String getResolution() {
-      java.lang.Object ref = resolution_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          resolution_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string resolution = 11;</code>
-     */
-    public com.google.protobuf.ByteString
-        getResolutionBytes() {
-      java.lang.Object ref = resolution_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        resolution_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int STATUS_FIELD_NUMBER = 12;
-    private java.lang.Object status_;
-    /**
-     * <code>optional string status = 12;</code>
-     */
-    public boolean hasStatus() {
-      return ((bitField0_ & 0x00000400) == 0x00000400);
-    }
-    /**
-     * <code>optional string status = 12;</code>
-     */
-    public java.lang.String getStatus() {
-      java.lang.Object ref = status_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          status_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string status = 12;</code>
-     */
-    public com.google.protobuf.ByteString
-        getStatusBytes() {
-      java.lang.Object ref = status_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        status_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int CHECKSUM_FIELD_NUMBER = 13;
-    private java.lang.Object checksum_;
-    /**
-     * <code>optional string checksum = 13;</code>
-     */
-    public boolean hasChecksum() {
-      return ((bitField0_ & 0x00000800) == 0x00000800);
-    }
-    /**
-     * <code>optional string checksum = 13;</code>
-     */
-    public java.lang.String getChecksum() {
-      java.lang.Object ref = checksum_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          checksum_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string checksum = 13;</code>
-     */
-    public com.google.protobuf.ByteString
-        getChecksumBytes() {
-      java.lang.Object ref = checksum_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        checksum_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int MANUAL_SEVERITY_FIELD_NUMBER = 14;
-    private boolean manualSeverity_;
-    /**
-     * <code>optional bool manual_severity = 14;</code>
-     */
-    public boolean hasManualSeverity() {
-      return ((bitField0_ & 0x00001000) == 0x00001000);
-    }
-    /**
-     * <code>optional bool manual_severity = 14;</code>
-     */
-    public boolean getManualSeverity() {
-      return manualSeverity_;
-    }
-
-    public static final int REPORTER_FIELD_NUMBER = 15;
-    private java.lang.Object reporter_;
-    /**
-     * <code>optional string reporter = 15;</code>
-     */
-    public boolean hasReporter() {
-      return ((bitField0_ & 0x00002000) == 0x00002000);
-    }
-    /**
-     * <code>optional string reporter = 15;</code>
-     */
-    public java.lang.String getReporter() {
-      java.lang.Object ref = reporter_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          reporter_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string reporter = 15;</code>
-     */
-    public com.google.protobuf.ByteString
-        getReporterBytes() {
-      java.lang.Object ref = reporter_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        reporter_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int ASSIGNEE_FIELD_NUMBER = 16;
-    private java.lang.Object assignee_;
-    /**
-     * <code>optional string assignee = 16;</code>
-     */
-    public boolean hasAssignee() {
-      return ((bitField0_ & 0x00004000) == 0x00004000);
-    }
-    /**
-     * <code>optional string assignee = 16;</code>
-     */
-    public java.lang.String getAssignee() {
-      java.lang.Object ref = assignee_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          assignee_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string assignee = 16;</code>
-     */
-    public com.google.protobuf.ByteString
-        getAssigneeBytes() {
-      java.lang.Object ref = assignee_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        assignee_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int ACTION_PLAN_KEY_FIELD_NUMBER = 17;
-    private java.lang.Object actionPlanKey_;
-    /**
-     * <code>optional string action_plan_key = 17;</code>
-     */
-    public boolean hasActionPlanKey() {
-      return ((bitField0_ & 0x00008000) == 0x00008000);
-    }
-    /**
-     * <code>optional string action_plan_key = 17;</code>
-     */
-    public java.lang.String getActionPlanKey() {
-      java.lang.Object ref = actionPlanKey_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          actionPlanKey_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string action_plan_key = 17;</code>
-     */
-    public com.google.protobuf.ByteString
-        getActionPlanKeyBytes() {
-      java.lang.Object ref = actionPlanKey_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        actionPlanKey_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int ATTRIBUTES_FIELD_NUMBER = 18;
-    private java.lang.Object attributes_;
-    /**
-     * <code>optional string attributes = 18;</code>
-     */
-    public boolean hasAttributes() {
-      return ((bitField0_ & 0x00010000) == 0x00010000);
-    }
-    /**
-     * <code>optional string attributes = 18;</code>
-     */
-    public java.lang.String getAttributes() {
-      java.lang.Object ref = attributes_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          attributes_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string attributes = 18;</code>
-     */
-    public com.google.protobuf.ByteString
-        getAttributesBytes() {
-      java.lang.Object ref = attributes_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        attributes_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int AUTHOR_LOGIN_FIELD_NUMBER = 19;
-    private java.lang.Object authorLogin_;
-    /**
-     * <code>optional string author_login = 19;</code>
-     */
-    public boolean hasAuthorLogin() {
-      return ((bitField0_ & 0x00020000) == 0x00020000);
-    }
-    /**
-     * <code>optional string author_login = 19;</code>
-     */
-    public java.lang.String getAuthorLogin() {
-      java.lang.Object ref = authorLogin_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          authorLogin_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string author_login = 19;</code>
-     */
-    public com.google.protobuf.ByteString
-        getAuthorLoginBytes() {
-      java.lang.Object ref = authorLogin_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        authorLogin_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int CREATION_DATE_FIELD_NUMBER = 20;
-    private long creationDate_;
-    /**
-     * <code>optional int64 creation_date = 20;</code>
-     */
-    public boolean hasCreationDate() {
-      return ((bitField0_ & 0x00040000) == 0x00040000);
-    }
-    /**
-     * <code>optional int64 creation_date = 20;</code>
-     */
-    public long getCreationDate() {
-      return creationDate_;
-    }
-
-    public static final int CLOSE_DATE_FIELD_NUMBER = 21;
-    private long closeDate_;
-    /**
-     * <code>optional int64 close_date = 21;</code>
-     */
-    public boolean hasCloseDate() {
-      return ((bitField0_ & 0x00080000) == 0x00080000);
-    }
-    /**
-     * <code>optional int64 close_date = 21;</code>
-     */
-    public long getCloseDate() {
-      return closeDate_;
-    }
-
-    public static final int UPDATE_DATE_FIELD_NUMBER = 22;
-    private long updateDate_;
-    /**
-     * <code>optional int64 update_date = 22;</code>
-     */
-    public boolean hasUpdateDate() {
-      return ((bitField0_ & 0x00100000) == 0x00100000);
-    }
-    /**
-     * <code>optional int64 update_date = 22;</code>
-     */
-    public long getUpdateDate() {
-      return updateDate_;
-    }
-
-    public static final int SELECTED_AT_FIELD_NUMBER = 23;
-    private long selectedAt_;
-    /**
-     * <code>optional int64 selected_at = 23;</code>
-     */
-    public boolean hasSelectedAt() {
-      return ((bitField0_ & 0x00200000) == 0x00200000);
-    }
-    /**
-     * <code>optional int64 selected_at = 23;</code>
-     */
-    public long getSelectedAt() {
-      return selectedAt_;
-    }
-
-    public static final int DIFF_FIELDS_FIELD_NUMBER = 24;
-    private java.lang.Object diffFields_;
-    /**
-     * <code>optional string diff_fields = 24;</code>
-     */
-    public boolean hasDiffFields() {
-      return ((bitField0_ & 0x00400000) == 0x00400000);
-    }
-    /**
-     * <code>optional string diff_fields = 24;</code>
-     */
-    public java.lang.String getDiffFields() {
-      java.lang.Object ref = diffFields_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          diffFields_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string diff_fields = 24;</code>
-     */
-    public com.google.protobuf.ByteString
-        getDiffFieldsBytes() {
-      java.lang.Object ref = diffFields_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        diffFields_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int IS_CHANGED_FIELD_NUMBER = 25;
-    private boolean isChanged_;
-    /**
-     * <code>optional bool is_changed = 25;</code>
-     */
-    public boolean hasIsChanged() {
-      return ((bitField0_ & 0x00800000) == 0x00800000);
-    }
-    /**
-     * <code>optional bool is_changed = 25;</code>
-     */
-    public boolean getIsChanged() {
-      return isChanged_;
-    }
-
-    public static final int MUST_SEND_NOTIFICATION_FIELD_NUMBER = 26;
-    private boolean mustSendNotification_;
-    /**
-     * <code>optional bool must_send_notification = 26;</code>
-     */
-    public boolean hasMustSendNotification() {
-      return ((bitField0_ & 0x01000000) == 0x01000000);
-    }
-    /**
-     * <code>optional bool must_send_notification = 26;</code>
-     */
-    public boolean getMustSendNotification() {
-      return mustSendNotification_;
-    }
-
-    private void initFields() {
-      ruleRepository_ = "";
-      ruleKey_ = "";
-      line_ = 0;
-      msg_ = "";
-      severity_ = org.sonar.batch.protocol.Constants.Severity.INFO;
-      tags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-      effortToFix_ = 0D;
-      isNew_ = false;
-      uuid_ = "";
-      debtInMinutes_ = 0L;
-      resolution_ = "";
-      status_ = "";
-      checksum_ = "";
-      manualSeverity_ = false;
-      reporter_ = "";
-      assignee_ = "";
-      actionPlanKey_ = "";
-      attributes_ = "";
-      authorLogin_ = "";
-      creationDate_ = 0L;
-      closeDate_ = 0L;
-      updateDate_ = 0L;
-      selectedAt_ = 0L;
-      diffFields_ = "";
-      isChanged_ = false;
-      mustSendNotification_ = false;
-    }
-    private byte memoizedIsInitialized = -1;
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      getSerializedSize();
-      if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeBytes(1, getRuleRepositoryBytes());
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeBytes(2, getRuleKeyBytes());
-      }
-      if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        output.writeInt32(3, line_);
-      }
-      if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        output.writeBytes(4, getMsgBytes());
-      }
-      if (((bitField0_ & 0x00000010) == 0x00000010)) {
-        output.writeEnum(5, severity_.getNumber());
-      }
-      for (int i = 0; i < tags_.size(); i++) {
-        output.writeBytes(6, tags_.getByteString(i));
-      }
-      if (((bitField0_ & 0x00000020) == 0x00000020)) {
-        output.writeDouble(7, effortToFix_);
-      }
-      if (((bitField0_ & 0x00000040) == 0x00000040)) {
-        output.writeBool(8, isNew_);
-      }
-      if (((bitField0_ & 0x00000080) == 0x00000080)) {
-        output.writeBytes(9, getUuidBytes());
-      }
-      if (((bitField0_ & 0x00000100) == 0x00000100)) {
-        output.writeInt64(10, debtInMinutes_);
-      }
-      if (((bitField0_ & 0x00000200) == 0x00000200)) {
-        output.writeBytes(11, getResolutionBytes());
-      }
-      if (((bitField0_ & 0x00000400) == 0x00000400)) {
-        output.writeBytes(12, getStatusBytes());
-      }
-      if (((bitField0_ & 0x00000800) == 0x00000800)) {
-        output.writeBytes(13, getChecksumBytes());
-      }
-      if (((bitField0_ & 0x00001000) == 0x00001000)) {
-        output.writeBool(14, manualSeverity_);
-      }
-      if (((bitField0_ & 0x00002000) == 0x00002000)) {
-        output.writeBytes(15, getReporterBytes());
-      }
-      if (((bitField0_ & 0x00004000) == 0x00004000)) {
-        output.writeBytes(16, getAssigneeBytes());
-      }
-      if (((bitField0_ & 0x00008000) == 0x00008000)) {
-        output.writeBytes(17, getActionPlanKeyBytes());
-      }
-      if (((bitField0_ & 0x00010000) == 0x00010000)) {
-        output.writeBytes(18, getAttributesBytes());
-      }
-      if (((bitField0_ & 0x00020000) == 0x00020000)) {
-        output.writeBytes(19, getAuthorLoginBytes());
-      }
-      if (((bitField0_ & 0x00040000) == 0x00040000)) {
-        output.writeInt64(20, creationDate_);
-      }
-      if (((bitField0_ & 0x00080000) == 0x00080000)) {
-        output.writeInt64(21, closeDate_);
-      }
-      if (((bitField0_ & 0x00100000) == 0x00100000)) {
-        output.writeInt64(22, updateDate_);
-      }
-      if (((bitField0_ & 0x00200000) == 0x00200000)) {
-        output.writeInt64(23, selectedAt_);
-      }
-      if (((bitField0_ & 0x00400000) == 0x00400000)) {
-        output.writeBytes(24, getDiffFieldsBytes());
-      }
-      if (((bitField0_ & 0x00800000) == 0x00800000)) {
-        output.writeBool(25, isChanged_);
-      }
-      if (((bitField0_ & 0x01000000) == 0x01000000)) {
-        output.writeBool(26, mustSendNotification_);
-      }
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public int getSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(1, getRuleRepositoryBytes());
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(2, getRuleKeyBytes());
-      }
-      if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(3, line_);
-      }
-      if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(4, getMsgBytes());
-      }
-      if (((bitField0_ & 0x00000010) == 0x00000010)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(5, severity_.getNumber());
-      }
-      {
-        int dataSize = 0;
-        for (int i = 0; i < tags_.size(); i++) {
-          dataSize += com.google.protobuf.CodedOutputStream
-            .computeBytesSizeNoTag(tags_.getByteString(i));
-        }
-        size += dataSize;
-        size += 1 * getTagsList().size();
-      }
-      if (((bitField0_ & 0x00000020) == 0x00000020)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeDoubleSize(7, effortToFix_);
-      }
-      if (((bitField0_ & 0x00000040) == 0x00000040)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(8, isNew_);
-      }
-      if (((bitField0_ & 0x00000080) == 0x00000080)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(9, getUuidBytes());
-      }
-      if (((bitField0_ & 0x00000100) == 0x00000100)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt64Size(10, debtInMinutes_);
-      }
-      if (((bitField0_ & 0x00000200) == 0x00000200)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(11, getResolutionBytes());
-      }
-      if (((bitField0_ & 0x00000400) == 0x00000400)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(12, getStatusBytes());
-      }
-      if (((bitField0_ & 0x00000800) == 0x00000800)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(13, getChecksumBytes());
-      }
-      if (((bitField0_ & 0x00001000) == 0x00001000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(14, manualSeverity_);
-      }
-      if (((bitField0_ & 0x00002000) == 0x00002000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(15, getReporterBytes());
-      }
-      if (((bitField0_ & 0x00004000) == 0x00004000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(16, getAssigneeBytes());
-      }
-      if (((bitField0_ & 0x00008000) == 0x00008000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(17, getActionPlanKeyBytes());
-      }
-      if (((bitField0_ & 0x00010000) == 0x00010000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(18, getAttributesBytes());
-      }
-      if (((bitField0_ & 0x00020000) == 0x00020000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(19, getAuthorLoginBytes());
-      }
-      if (((bitField0_ & 0x00040000) == 0x00040000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt64Size(20, creationDate_);
-      }
-      if (((bitField0_ & 0x00080000) == 0x00080000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt64Size(21, closeDate_);
-      }
-      if (((bitField0_ & 0x00100000) == 0x00100000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt64Size(22, updateDate_);
-      }
-      if (((bitField0_ & 0x00200000) == 0x00200000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt64Size(23, selectedAt_);
-      }
-      if (((bitField0_ & 0x00400000) == 0x00400000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(24, getDiffFieldsBytes());
-      }
-      if (((bitField0_ & 0x00800000) == 0x00800000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(25, isChanged_);
-      }
-      if (((bitField0_ & 0x01000000) == 0x01000000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(26, mustSendNotification_);
-      }
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
-      return size;
-    }
-
-    private static final long serialVersionUID = 0L;
-    @java.lang.Override
-    protected java.lang.Object writeReplace()
-        throws java.io.ObjectStreamException {
-      return super.writeReplace();
-    }
-
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportIssue parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportIssue parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportIssue parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportIssue parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportIssue parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportIssue parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportIssue parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportIssue parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportIssue parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportIssue parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder(org.sonar.batch.protocol.output.BatchOutput.ReportIssue prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    public Builder toBuilder() { return newBuilder(this); }
-
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code ReportIssue}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:ReportIssue)
-        org.sonar.batch.protocol.output.BatchOutput.ReportIssueOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return org.sonar.batch.protocol.output.BatchOutput.internal_static_ReportIssue_descriptor;
-      }
-
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return org.sonar.batch.protocol.output.BatchOutput.internal_static_ReportIssue_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                org.sonar.batch.protocol.output.BatchOutput.ReportIssue.class, org.sonar.batch.protocol.output.BatchOutput.ReportIssue.Builder.class);
-      }
-
-      // Construct using org.sonar.batch.protocol.output.BatchOutput.ReportIssue.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
-        }
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      public Builder clear() {
-        super.clear();
-        ruleRepository_ = "";
-        bitField0_ = (bitField0_ & ~0x00000001);
-        ruleKey_ = "";
-        bitField0_ = (bitField0_ & ~0x00000002);
-        line_ = 0;
-        bitField0_ = (bitField0_ & ~0x00000004);
-        msg_ = "";
-        bitField0_ = (bitField0_ & ~0x00000008);
-        severity_ = org.sonar.batch.protocol.Constants.Severity.INFO;
-        bitField0_ = (bitField0_ & ~0x00000010);
-        tags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00000020);
-        effortToFix_ = 0D;
-        bitField0_ = (bitField0_ & ~0x00000040);
-        isNew_ = false;
-        bitField0_ = (bitField0_ & ~0x00000080);
-        uuid_ = "";
-        bitField0_ = (bitField0_ & ~0x00000100);
-        debtInMinutes_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00000200);
-        resolution_ = "";
-        bitField0_ = (bitField0_ & ~0x00000400);
-        status_ = "";
-        bitField0_ = (bitField0_ & ~0x00000800);
-        checksum_ = "";
-        bitField0_ = (bitField0_ & ~0x00001000);
-        manualSeverity_ = false;
-        bitField0_ = (bitField0_ & ~0x00002000);
-        reporter_ = "";
-        bitField0_ = (bitField0_ & ~0x00004000);
-        assignee_ = "";
-        bitField0_ = (bitField0_ & ~0x00008000);
-        actionPlanKey_ = "";
-        bitField0_ = (bitField0_ & ~0x00010000);
-        attributes_ = "";
-        bitField0_ = (bitField0_ & ~0x00020000);
-        authorLogin_ = "";
-        bitField0_ = (bitField0_ & ~0x00040000);
-        creationDate_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00080000);
-        closeDate_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00100000);
-        updateDate_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00200000);
-        selectedAt_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00400000);
-        diffFields_ = "";
-        bitField0_ = (bitField0_ & ~0x00800000);
-        isChanged_ = false;
-        bitField0_ = (bitField0_ & ~0x01000000);
-        mustSendNotification_ = false;
-        bitField0_ = (bitField0_ & ~0x02000000);
-        return this;
-      }
-
-      public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return org.sonar.batch.protocol.output.BatchOutput.internal_static_ReportIssue_descriptor;
-      }
-
-      public org.sonar.batch.protocol.output.BatchOutput.ReportIssue getDefaultInstanceForType() {
-        return org.sonar.batch.protocol.output.BatchOutput.ReportIssue.getDefaultInstance();
-      }
-
-      public org.sonar.batch.protocol.output.BatchOutput.ReportIssue build() {
-        org.sonar.batch.protocol.output.BatchOutput.ReportIssue result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      public org.sonar.batch.protocol.output.BatchOutput.ReportIssue buildPartial() {
-        org.sonar.batch.protocol.output.BatchOutput.ReportIssue result = new org.sonar.batch.protocol.output.BatchOutput.ReportIssue(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.ruleRepository_ = ruleRepository_;
-        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.ruleKey_ = ruleKey_;
-        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
-          to_bitField0_ |= 0x00000004;
-        }
-        result.line_ = line_;
-        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
-          to_bitField0_ |= 0x00000008;
-        }
-        result.msg_ = msg_;
-        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
-          to_bitField0_ |= 0x00000010;
-        }
-        result.severity_ = severity_;
-        if (((bitField0_ & 0x00000020) == 0x00000020)) {
-          tags_ = tags_.getUnmodifiableView();
-          bitField0_ = (bitField0_ & ~0x00000020);
-        }
-        result.tags_ = tags_;
-        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
-          to_bitField0_ |= 0x00000020;
-        }
-        result.effortToFix_ = effortToFix_;
-        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
-          to_bitField0_ |= 0x00000040;
-        }
-        result.isNew_ = isNew_;
-        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
-          to_bitField0_ |= 0x00000080;
-        }
-        result.uuid_ = uuid_;
-        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
-          to_bitField0_ |= 0x00000100;
-        }
-        result.debtInMinutes_ = debtInMinutes_;
-        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
-          to_bitField0_ |= 0x00000200;
-        }
-        result.resolution_ = resolution_;
-        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
-          to_bitField0_ |= 0x00000400;
-        }
-        result.status_ = status_;
-        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
-          to_bitField0_ |= 0x00000800;
-        }
-        result.checksum_ = checksum_;
-        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
-          to_bitField0_ |= 0x00001000;
-        }
-        result.manualSeverity_ = manualSeverity_;
-        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
-          to_bitField0_ |= 0x00002000;
-        }
-        result.reporter_ = reporter_;
-        if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
-          to_bitField0_ |= 0x00004000;
-        }
-        result.assignee_ = assignee_;
-        if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
-          to_bitField0_ |= 0x00008000;
-        }
-        result.actionPlanKey_ = actionPlanKey_;
-        if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
-          to_bitField0_ |= 0x00010000;
-        }
-        result.attributes_ = attributes_;
-        if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
-          to_bitField0_ |= 0x00020000;
-        }
-        result.authorLogin_ = authorLogin_;
-        if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
-          to_bitField0_ |= 0x00040000;
-        }
-        result.creationDate_ = creationDate_;
-        if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
-          to_bitField0_ |= 0x00080000;
-        }
-        result.closeDate_ = closeDate_;
-        if (((from_bitField0_ & 0x00200000) == 0x00200000)) {
-          to_bitField0_ |= 0x00100000;
-        }
-        result.updateDate_ = updateDate_;
-        if (((from_bitField0_ & 0x00400000) == 0x00400000)) {
-          to_bitField0_ |= 0x00200000;
-        }
-        result.selectedAt_ = selectedAt_;
-        if (((from_bitField0_ & 0x00800000) == 0x00800000)) {
-          to_bitField0_ |= 0x00400000;
-        }
-        result.diffFields_ = diffFields_;
-        if (((from_bitField0_ & 0x01000000) == 0x01000000)) {
-          to_bitField0_ |= 0x00800000;
-        }
-        result.isChanged_ = isChanged_;
-        if (((from_bitField0_ & 0x02000000) == 0x02000000)) {
-          to_bitField0_ |= 0x01000000;
-        }
-        result.mustSendNotification_ = mustSendNotification_;
-        result.bitField0_ = to_bitField0_;
-        onBuilt();
-        return result;
-      }
-
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.sonar.batch.protocol.output.BatchOutput.ReportIssue) {
-          return mergeFrom((org.sonar.batch.protocol.output.BatchOutput.ReportIssue)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(org.sonar.batch.protocol.output.BatchOutput.ReportIssue other) {
-        if (other == org.sonar.batch.protocol.output.BatchOutput.ReportIssue.getDefaultInstance()) return this;
-        if (other.hasRuleRepository()) {
-          bitField0_ |= 0x00000001;
-          ruleRepository_ = other.ruleRepository_;
-          onChanged();
-        }
-        if (other.hasRuleKey()) {
-          bitField0_ |= 0x00000002;
-          ruleKey_ = other.ruleKey_;
-          onChanged();
-        }
-        if (other.hasLine()) {
-          setLine(other.getLine());
-        }
-        if (other.hasMsg()) {
-          bitField0_ |= 0x00000008;
-          msg_ = other.msg_;
-          onChanged();
-        }
-        if (other.hasSeverity()) {
-          setSeverity(other.getSeverity());
-        }
-        if (!other.tags_.isEmpty()) {
-          if (tags_.isEmpty()) {
-            tags_ = other.tags_;
-            bitField0_ = (bitField0_ & ~0x00000020);
-          } else {
-            ensureTagsIsMutable();
-            tags_.addAll(other.tags_);
-          }
-          onChanged();
-        }
-        if (other.hasEffortToFix()) {
-          setEffortToFix(other.getEffortToFix());
-        }
-        if (other.hasIsNew()) {
-          setIsNew(other.getIsNew());
-        }
-        if (other.hasUuid()) {
-          bitField0_ |= 0x00000100;
-          uuid_ = other.uuid_;
-          onChanged();
-        }
-        if (other.hasDebtInMinutes()) {
-          setDebtInMinutes(other.getDebtInMinutes());
-        }
-        if (other.hasResolution()) {
-          bitField0_ |= 0x00000400;
-          resolution_ = other.resolution_;
-          onChanged();
-        }
-        if (other.hasStatus()) {
-          bitField0_ |= 0x00000800;
-          status_ = other.status_;
-          onChanged();
-        }
-        if (other.hasChecksum()) {
-          bitField0_ |= 0x00001000;
-          checksum_ = other.checksum_;
-          onChanged();
-        }
-        if (other.hasManualSeverity()) {
-          setManualSeverity(other.getManualSeverity());
-        }
-        if (other.hasReporter()) {
-          bitField0_ |= 0x00004000;
-          reporter_ = other.reporter_;
-          onChanged();
-        }
-        if (other.hasAssignee()) {
-          bitField0_ |= 0x00008000;
-          assignee_ = other.assignee_;
-          onChanged();
-        }
-        if (other.hasActionPlanKey()) {
-          bitField0_ |= 0x00010000;
-          actionPlanKey_ = other.actionPlanKey_;
-          onChanged();
-        }
-        if (other.hasAttributes()) {
-          bitField0_ |= 0x00020000;
-          attributes_ = other.attributes_;
-          onChanged();
-        }
-        if (other.hasAuthorLogin()) {
-          bitField0_ |= 0x00040000;
-          authorLogin_ = other.authorLogin_;
-          onChanged();
-        }
-        if (other.hasCreationDate()) {
-          setCreationDate(other.getCreationDate());
-        }
-        if (other.hasCloseDate()) {
-          setCloseDate(other.getCloseDate());
-        }
-        if (other.hasUpdateDate()) {
-          setUpdateDate(other.getUpdateDate());
-        }
-        if (other.hasSelectedAt()) {
-          setSelectedAt(other.getSelectedAt());
-        }
-        if (other.hasDiffFields()) {
-          bitField0_ |= 0x00800000;
-          diffFields_ = other.diffFields_;
-          onChanged();
-        }
-        if (other.hasIsChanged()) {
-          setIsChanged(other.getIsChanged());
-        }
-        if (other.hasMustSendNotification()) {
-          setMustSendNotification(other.getMustSendNotification());
-        }
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        org.sonar.batch.protocol.output.BatchOutput.ReportIssue parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.sonar.batch.protocol.output.BatchOutput.ReportIssue) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.lang.Object ruleRepository_ = "";
-      /**
-       * <code>optional string rule_repository = 1;</code>
-       */
-      public boolean hasRuleRepository() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
-       * <code>optional string rule_repository = 1;</code>
-       */
-      public java.lang.String getRuleRepository() {
-        java.lang.Object ref = ruleRepository_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            ruleRepository_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string rule_repository = 1;</code>
-       */
-      public com.google.protobuf.ByteString
-          getRuleRepositoryBytes() {
-        java.lang.Object ref = ruleRepository_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          ruleRepository_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string rule_repository = 1;</code>
-       */
-      public Builder setRuleRepository(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        ruleRepository_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string rule_repository = 1;</code>
-       */
-      public Builder clearRuleRepository() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        ruleRepository_ = getDefaultInstance().getRuleRepository();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string rule_repository = 1;</code>
-       */
-      public Builder setRuleRepositoryBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        ruleRepository_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object ruleKey_ = "";
-      /**
-       * <code>optional string rule_key = 2;</code>
-       */
-      public boolean hasRuleKey() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
-      }
-      /**
-       * <code>optional string rule_key = 2;</code>
-       */
-      public java.lang.String getRuleKey() {
-        java.lang.Object ref = ruleKey_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            ruleKey_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string rule_key = 2;</code>
-       */
-      public com.google.protobuf.ByteString
-          getRuleKeyBytes() {
-        java.lang.Object ref = ruleKey_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          ruleKey_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string rule_key = 2;</code>
-       */
-      public Builder setRuleKey(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        ruleKey_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string rule_key = 2;</code>
-       */
-      public Builder clearRuleKey() {
-        bitField0_ = (bitField0_ & ~0x00000002);
-        ruleKey_ = getDefaultInstance().getRuleKey();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string rule_key = 2;</code>
-       */
-      public Builder setRuleKeyBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        ruleKey_ = value;
-        onChanged();
-        return this;
-      }
-
-      private int line_ ;
-      /**
-       * <code>optional int32 line = 3;</code>
-       */
-      public boolean hasLine() {
-        return ((bitField0_ & 0x00000004) == 0x00000004);
-      }
-      /**
-       * <code>optional int32 line = 3;</code>
-       */
-      public int getLine() {
-        return line_;
-      }
-      /**
-       * <code>optional int32 line = 3;</code>
-       */
-      public Builder setLine(int value) {
-        bitField0_ |= 0x00000004;
-        line_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional int32 line = 3;</code>
-       */
-      public Builder clearLine() {
-        bitField0_ = (bitField0_ & ~0x00000004);
-        line_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object msg_ = "";
-      /**
-       * <code>optional string msg = 4;</code>
-       */
-      public boolean hasMsg() {
-        return ((bitField0_ & 0x00000008) == 0x00000008);
-      }
-      /**
-       * <code>optional string msg = 4;</code>
-       */
-      public java.lang.String getMsg() {
-        java.lang.Object ref = msg_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            msg_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string msg = 4;</code>
-       */
-      public com.google.protobuf.ByteString
-          getMsgBytes() {
-        java.lang.Object ref = msg_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          msg_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string msg = 4;</code>
-       */
-      public Builder setMsg(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000008;
-        msg_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string msg = 4;</code>
-       */
-      public Builder clearMsg() {
-        bitField0_ = (bitField0_ & ~0x00000008);
-        msg_ = getDefaultInstance().getMsg();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string msg = 4;</code>
-       */
-      public Builder setMsgBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000008;
-        msg_ = value;
-        onChanged();
-        return this;
-      }
-
-      private org.sonar.batch.protocol.Constants.Severity severity_ = org.sonar.batch.protocol.Constants.Severity.INFO;
-      /**
-       * <code>optional .Severity severity = 5;</code>
-       */
-      public boolean hasSeverity() {
-        return ((bitField0_ & 0x00000010) == 0x00000010);
-      }
-      /**
-       * <code>optional .Severity severity = 5;</code>
-       */
-      public org.sonar.batch.protocol.Constants.Severity getSeverity() {
-        return severity_;
-      }
-      /**
-       * <code>optional .Severity severity = 5;</code>
-       */
-      public Builder setSeverity(org.sonar.batch.protocol.Constants.Severity value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        bitField0_ |= 0x00000010;
-        severity_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional .Severity severity = 5;</code>
-       */
-      public Builder clearSeverity() {
-        bitField0_ = (bitField0_ & ~0x00000010);
-        severity_ = org.sonar.batch.protocol.Constants.Severity.INFO;
-        onChanged();
-        return this;
-      }
-
-      private com.google.protobuf.LazyStringList tags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-      private void ensureTagsIsMutable() {
-        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
-          tags_ = new com.google.protobuf.LazyStringArrayList(tags_);
-          bitField0_ |= 0x00000020;
-         }
-      }
-      /**
-       * <code>repeated string tags = 6;</code>
-       */
-      public com.google.protobuf.ProtocolStringList
-          getTagsList() {
-        return tags_.getUnmodifiableView();
-      }
-      /**
-       * <code>repeated string tags = 6;</code>
-       */
-      public int getTagsCount() {
-        return tags_.size();
-      }
-      /**
-       * <code>repeated string tags = 6;</code>
-       */
-      public java.lang.String getTags(int index) {
-        return tags_.get(index);
-      }
-      /**
-       * <code>repeated string tags = 6;</code>
-       */
-      public com.google.protobuf.ByteString
-          getTagsBytes(int index) {
-        return tags_.getByteString(index);
-      }
-      /**
-       * <code>repeated string tags = 6;</code>
-       */
-      public Builder setTags(
-          int index, java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureTagsIsMutable();
-        tags_.set(index, value);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string tags = 6;</code>
-       */
-      public Builder addTags(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureTagsIsMutable();
-        tags_.add(value);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string tags = 6;</code>
-       */
-      public Builder addAllTags(
-          java.lang.Iterable<java.lang.String> values) {
-        ensureTagsIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, tags_);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string tags = 6;</code>
-       */
-      public Builder clearTags() {
-        tags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00000020);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string tags = 6;</code>
-       */
-      public Builder addTagsBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureTagsIsMutable();
-        tags_.add(value);
-        onChanged();
-        return this;
-      }
-
-      private double effortToFix_ ;
-      /**
-       * <code>optional double effort_to_fix = 7;</code>
-       *
-       * <pre>
-       * temporary fields during development of computation stack
-       * </pre>
-       */
-      public boolean hasEffortToFix() {
-        return ((bitField0_ & 0x00000040) == 0x00000040);
-      }
-      /**
-       * <code>optional double effort_to_fix = 7;</code>
-       *
-       * <pre>
-       * temporary fields during development of computation stack
-       * </pre>
-       */
-      public double getEffortToFix() {
-        return effortToFix_;
-      }
-      /**
-       * <code>optional double effort_to_fix = 7;</code>
-       *
-       * <pre>
-       * temporary fields during development of computation stack
-       * </pre>
-       */
-      public Builder setEffortToFix(double value) {
-        bitField0_ |= 0x00000040;
-        effortToFix_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional double effort_to_fix = 7;</code>
-       *
-       * <pre>
-       * temporary fields during development of computation stack
-       * </pre>
-       */
-      public Builder clearEffortToFix() {
-        bitField0_ = (bitField0_ & ~0x00000040);
-        effortToFix_ = 0D;
-        onChanged();
-        return this;
-      }
-
-      private boolean isNew_ ;
-      /**
-       * <code>optional bool is_new = 8;</code>
-       */
-      public boolean hasIsNew() {
-        return ((bitField0_ & 0x00000080) == 0x00000080);
-      }
-      /**
-       * <code>optional bool is_new = 8;</code>
-       */
-      public boolean getIsNew() {
-        return isNew_;
-      }
-      /**
-       * <code>optional bool is_new = 8;</code>
-       */
-      public Builder setIsNew(boolean value) {
-        bitField0_ |= 0x00000080;
-        isNew_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional bool is_new = 8;</code>
-       */
-      public Builder clearIsNew() {
-        bitField0_ = (bitField0_ & ~0x00000080);
-        isNew_ = false;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object uuid_ = "";
-      /**
-       * <code>optional string uuid = 9;</code>
-       */
-      public boolean hasUuid() {
-        return ((bitField0_ & 0x00000100) == 0x00000100);
-      }
-      /**
-       * <code>optional string uuid = 9;</code>
-       */
-      public java.lang.String getUuid() {
-        java.lang.Object ref = uuid_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            uuid_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string uuid = 9;</code>
-       */
-      public com.google.protobuf.ByteString
-          getUuidBytes() {
-        java.lang.Object ref = uuid_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          uuid_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string uuid = 9;</code>
-       */
-      public Builder setUuid(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000100;
-        uuid_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string uuid = 9;</code>
-       */
-      public Builder clearUuid() {
-        bitField0_ = (bitField0_ & ~0x00000100);
-        uuid_ = getDefaultInstance().getUuid();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string uuid = 9;</code>
-       */
-      public Builder setUuidBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000100;
-        uuid_ = value;
-        onChanged();
-        return this;
-      }
-
-      private long debtInMinutes_ ;
-      /**
-       * <code>optional int64 debt_in_minutes = 10;</code>
-       */
-      public boolean hasDebtInMinutes() {
-        return ((bitField0_ & 0x00000200) == 0x00000200);
-      }
-      /**
-       * <code>optional int64 debt_in_minutes = 10;</code>
-       */
-      public long getDebtInMinutes() {
-        return debtInMinutes_;
-      }
-      /**
-       * <code>optional int64 debt_in_minutes = 10;</code>
-       */
-      public Builder setDebtInMinutes(long value) {
-        bitField0_ |= 0x00000200;
-        debtInMinutes_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional int64 debt_in_minutes = 10;</code>
-       */
-      public Builder clearDebtInMinutes() {
-        bitField0_ = (bitField0_ & ~0x00000200);
-        debtInMinutes_ = 0L;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object resolution_ = "";
-      /**
-       * <code>optional string resolution = 11;</code>
-       */
-      public boolean hasResolution() {
-        return ((bitField0_ & 0x00000400) == 0x00000400);
-      }
-      /**
-       * <code>optional string resolution = 11;</code>
-       */
-      public java.lang.String getResolution() {
-        java.lang.Object ref = resolution_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            resolution_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string resolution = 11;</code>
-       */
-      public com.google.protobuf.ByteString
-          getResolutionBytes() {
-        java.lang.Object ref = resolution_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          resolution_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string resolution = 11;</code>
-       */
-      public Builder setResolution(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000400;
-        resolution_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string resolution = 11;</code>
-       */
-      public Builder clearResolution() {
-        bitField0_ = (bitField0_ & ~0x00000400);
-        resolution_ = getDefaultInstance().getResolution();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string resolution = 11;</code>
-       */
-      public Builder setResolutionBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000400;
-        resolution_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object status_ = "";
-      /**
-       * <code>optional string status = 12;</code>
-       */
-      public boolean hasStatus() {
-        return ((bitField0_ & 0x00000800) == 0x00000800);
-      }
-      /**
-       * <code>optional string status = 12;</code>
-       */
-      public java.lang.String getStatus() {
-        java.lang.Object ref = status_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            status_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string status = 12;</code>
-       */
-      public com.google.protobuf.ByteString
-          getStatusBytes() {
-        java.lang.Object ref = status_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          status_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string status = 12;</code>
-       */
-      public Builder setStatus(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000800;
-        status_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string status = 12;</code>
-       */
-      public Builder clearStatus() {
-        bitField0_ = (bitField0_ & ~0x00000800);
-        status_ = getDefaultInstance().getStatus();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string status = 12;</code>
-       */
-      public Builder setStatusBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000800;
-        status_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object checksum_ = "";
-      /**
-       * <code>optional string checksum = 13;</code>
-       */
-      public boolean hasChecksum() {
-        return ((bitField0_ & 0x00001000) == 0x00001000);
-      }
-      /**
-       * <code>optional string checksum = 13;</code>
-       */
-      public java.lang.String getChecksum() {
-        java.lang.Object ref = checksum_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            checksum_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string checksum = 13;</code>
-       */
-      public com.google.protobuf.ByteString
-          getChecksumBytes() {
-        java.lang.Object ref = checksum_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          checksum_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string checksum = 13;</code>
-       */
-      public Builder setChecksum(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00001000;
-        checksum_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string checksum = 13;</code>
-       */
-      public Builder clearChecksum() {
-        bitField0_ = (bitField0_ & ~0x00001000);
-        checksum_ = getDefaultInstance().getChecksum();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string checksum = 13;</code>
-       */
-      public Builder setChecksumBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00001000;
-        checksum_ = value;
-        onChanged();
-        return this;
-      }
-
-      private boolean manualSeverity_ ;
-      /**
-       * <code>optional bool manual_severity = 14;</code>
-       */
-      public boolean hasManualSeverity() {
-        return ((bitField0_ & 0x00002000) == 0x00002000);
-      }
-      /**
-       * <code>optional bool manual_severity = 14;</code>
-       */
-      public boolean getManualSeverity() {
-        return manualSeverity_;
-      }
-      /**
-       * <code>optional bool manual_severity = 14;</code>
-       */
-      public Builder setManualSeverity(boolean value) {
-        bitField0_ |= 0x00002000;
-        manualSeverity_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional bool manual_severity = 14;</code>
-       */
-      public Builder clearManualSeverity() {
-        bitField0_ = (bitField0_ & ~0x00002000);
-        manualSeverity_ = false;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object reporter_ = "";
-      /**
-       * <code>optional string reporter = 15;</code>
-       */
-      public boolean hasReporter() {
-        return ((bitField0_ & 0x00004000) == 0x00004000);
-      }
-      /**
-       * <code>optional string reporter = 15;</code>
-       */
-      public java.lang.String getReporter() {
-        java.lang.Object ref = reporter_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            reporter_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string reporter = 15;</code>
-       */
-      public com.google.protobuf.ByteString
-          getReporterBytes() {
-        java.lang.Object ref = reporter_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          reporter_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string reporter = 15;</code>
-       */
-      public Builder setReporter(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00004000;
-        reporter_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string reporter = 15;</code>
-       */
-      public Builder clearReporter() {
-        bitField0_ = (bitField0_ & ~0x00004000);
-        reporter_ = getDefaultInstance().getReporter();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string reporter = 15;</code>
-       */
-      public Builder setReporterBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00004000;
-        reporter_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object assignee_ = "";
-      /**
-       * <code>optional string assignee = 16;</code>
-       */
-      public boolean hasAssignee() {
-        return ((bitField0_ & 0x00008000) == 0x00008000);
-      }
-      /**
-       * <code>optional string assignee = 16;</code>
-       */
-      public java.lang.String getAssignee() {
-        java.lang.Object ref = assignee_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            assignee_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string assignee = 16;</code>
-       */
-      public com.google.protobuf.ByteString
-          getAssigneeBytes() {
-        java.lang.Object ref = assignee_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          assignee_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string assignee = 16;</code>
-       */
-      public Builder setAssignee(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00008000;
-        assignee_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string assignee = 16;</code>
-       */
-      public Builder clearAssignee() {
-        bitField0_ = (bitField0_ & ~0x00008000);
-        assignee_ = getDefaultInstance().getAssignee();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string assignee = 16;</code>
-       */
-      public Builder setAssigneeBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00008000;
-        assignee_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object actionPlanKey_ = "";
-      /**
-       * <code>optional string action_plan_key = 17;</code>
-       */
-      public boolean hasActionPlanKey() {
-        return ((bitField0_ & 0x00010000) == 0x00010000);
-      }
-      /**
-       * <code>optional string action_plan_key = 17;</code>
-       */
-      public java.lang.String getActionPlanKey() {
-        java.lang.Object ref = actionPlanKey_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            actionPlanKey_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string action_plan_key = 17;</code>
-       */
-      public com.google.protobuf.ByteString
-          getActionPlanKeyBytes() {
-        java.lang.Object ref = actionPlanKey_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          actionPlanKey_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string action_plan_key = 17;</code>
-       */
-      public Builder setActionPlanKey(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00010000;
-        actionPlanKey_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string action_plan_key = 17;</code>
-       */
-      public Builder clearActionPlanKey() {
-        bitField0_ = (bitField0_ & ~0x00010000);
-        actionPlanKey_ = getDefaultInstance().getActionPlanKey();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string action_plan_key = 17;</code>
-       */
-      public Builder setActionPlanKeyBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00010000;
-        actionPlanKey_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object attributes_ = "";
-      /**
-       * <code>optional string attributes = 18;</code>
-       */
-      public boolean hasAttributes() {
-        return ((bitField0_ & 0x00020000) == 0x00020000);
-      }
-      /**
-       * <code>optional string attributes = 18;</code>
-       */
-      public java.lang.String getAttributes() {
-        java.lang.Object ref = attributes_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            attributes_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string attributes = 18;</code>
-       */
-      public com.google.protobuf.ByteString
-          getAttributesBytes() {
-        java.lang.Object ref = attributes_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          attributes_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string attributes = 18;</code>
-       */
-      public Builder setAttributes(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00020000;
-        attributes_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string attributes = 18;</code>
-       */
-      public Builder clearAttributes() {
-        bitField0_ = (bitField0_ & ~0x00020000);
-        attributes_ = getDefaultInstance().getAttributes();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string attributes = 18;</code>
-       */
-      public Builder setAttributesBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00020000;
-        attributes_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object authorLogin_ = "";
-      /**
-       * <code>optional string author_login = 19;</code>
-       */
-      public boolean hasAuthorLogin() {
-        return ((bitField0_ & 0x00040000) == 0x00040000);
-      }
-      /**
-       * <code>optional string author_login = 19;</code>
-       */
-      public java.lang.String getAuthorLogin() {
-        java.lang.Object ref = authorLogin_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            authorLogin_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string author_login = 19;</code>
-       */
-      public com.google.protobuf.ByteString
-          getAuthorLoginBytes() {
-        java.lang.Object ref = authorLogin_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          authorLogin_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string author_login = 19;</code>
-       */
-      public Builder setAuthorLogin(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00040000;
-        authorLogin_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string author_login = 19;</code>
-       */
-      public Builder clearAuthorLogin() {
-        bitField0_ = (bitField0_ & ~0x00040000);
-        authorLogin_ = getDefaultInstance().getAuthorLogin();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string author_login = 19;</code>
-       */
-      public Builder setAuthorLoginBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00040000;
-        authorLogin_ = value;
-        onChanged();
-        return this;
-      }
-
-      private long creationDate_ ;
-      /**
-       * <code>optional int64 creation_date = 20;</code>
-       */
-      public boolean hasCreationDate() {
-        return ((bitField0_ & 0x00080000) == 0x00080000);
-      }
-      /**
-       * <code>optional int64 creation_date = 20;</code>
-       */
-      public long getCreationDate() {
-        return creationDate_;
-      }
-      /**
-       * <code>optional int64 creation_date = 20;</code>
-       */
-      public Builder setCreationDate(long value) {
-        bitField0_ |= 0x00080000;
-        creationDate_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional int64 creation_date = 20;</code>
-       */
-      public Builder clearCreationDate() {
-        bitField0_ = (bitField0_ & ~0x00080000);
-        creationDate_ = 0L;
-        onChanged();
-        return this;
-      }
-
-      private long closeDate_ ;
-      /**
-       * <code>optional int64 close_date = 21;</code>
-       */
-      public boolean hasCloseDate() {
-        return ((bitField0_ & 0x00100000) == 0x00100000);
-      }
-      /**
-       * <code>optional int64 close_date = 21;</code>
-       */
-      public long getCloseDate() {
-        return closeDate_;
-      }
-      /**
-       * <code>optional int64 close_date = 21;</code>
-       */
-      public Builder setCloseDate(long value) {
-        bitField0_ |= 0x00100000;
-        closeDate_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional int64 close_date = 21;</code>
-       */
-      public Builder clearCloseDate() {
-        bitField0_ = (bitField0_ & ~0x00100000);
-        closeDate_ = 0L;
-        onChanged();
-        return this;
-      }
-
-      private long updateDate_ ;
-      /**
-       * <code>optional int64 update_date = 22;</code>
-       */
-      public boolean hasUpdateDate() {
-        return ((bitField0_ & 0x00200000) == 0x00200000);
-      }
-      /**
-       * <code>optional int64 update_date = 22;</code>
-       */
-      public long getUpdateDate() {
-        return updateDate_;
-      }
-      /**
-       * <code>optional int64 update_date = 22;</code>
-       */
-      public Builder setUpdateDate(long value) {
-        bitField0_ |= 0x00200000;
-        updateDate_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional int64 update_date = 22;</code>
-       */
-      public Builder clearUpdateDate() {
-        bitField0_ = (bitField0_ & ~0x00200000);
-        updateDate_ = 0L;
-        onChanged();
-        return this;
-      }
-
-      private long selectedAt_ ;
-      /**
-       * <code>optional int64 selected_at = 23;</code>
-       */
-      public boolean hasSelectedAt() {
-        return ((bitField0_ & 0x00400000) == 0x00400000);
-      }
-      /**
-       * <code>optional int64 selected_at = 23;</code>
-       */
-      public long getSelectedAt() {
-        return selectedAt_;
-      }
-      /**
-       * <code>optional int64 selected_at = 23;</code>
-       */
-      public Builder setSelectedAt(long value) {
-        bitField0_ |= 0x00400000;
-        selectedAt_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional int64 selected_at = 23;</code>
-       */
-      public Builder clearSelectedAt() {
-        bitField0_ = (bitField0_ & ~0x00400000);
-        selectedAt_ = 0L;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object diffFields_ = "";
-      /**
-       * <code>optional string diff_fields = 24;</code>
-       */
-      public boolean hasDiffFields() {
-        return ((bitField0_ & 0x00800000) == 0x00800000);
-      }
-      /**
-       * <code>optional string diff_fields = 24;</code>
-       */
-      public java.lang.String getDiffFields() {
-        java.lang.Object ref = diffFields_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            diffFields_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string diff_fields = 24;</code>
-       */
-      public com.google.protobuf.ByteString
-          getDiffFieldsBytes() {
-        java.lang.Object ref = diffFields_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          diffFields_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string diff_fields = 24;</code>
-       */
-      public Builder setDiffFields(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00800000;
-        diffFields_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string diff_fields = 24;</code>
-       */
-      public Builder clearDiffFields() {
-        bitField0_ = (bitField0_ & ~0x00800000);
-        diffFields_ = getDefaultInstance().getDiffFields();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string diff_fields = 24;</code>
-       */
-      public Builder setDiffFieldsBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00800000;
-        diffFields_ = value;
-        onChanged();
-        return this;
-      }
-
-      private boolean isChanged_ ;
-      /**
-       * <code>optional bool is_changed = 25;</code>
-       */
-      public boolean hasIsChanged() {
-        return ((bitField0_ & 0x01000000) == 0x01000000);
-      }
-      /**
-       * <code>optional bool is_changed = 25;</code>
-       */
-      public boolean getIsChanged() {
-        return isChanged_;
-      }
-      /**
-       * <code>optional bool is_changed = 25;</code>
-       */
-      public Builder setIsChanged(boolean value) {
-        bitField0_ |= 0x01000000;
-        isChanged_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional bool is_changed = 25;</code>
-       */
-      public Builder clearIsChanged() {
-        bitField0_ = (bitField0_ & ~0x01000000);
-        isChanged_ = false;
-        onChanged();
-        return this;
-      }
-
-      private boolean mustSendNotification_ ;
-      /**
-       * <code>optional bool must_send_notification = 26;</code>
-       */
-      public boolean hasMustSendNotification() {
-        return ((bitField0_ & 0x02000000) == 0x02000000);
-      }
-      /**
-       * <code>optional bool must_send_notification = 26;</code>
-       */
-      public boolean getMustSendNotification() {
-        return mustSendNotification_;
-      }
-      /**
-       * <code>optional bool must_send_notification = 26;</code>
-       */
-      public Builder setMustSendNotification(boolean value) {
-        bitField0_ |= 0x02000000;
-        mustSendNotification_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional bool must_send_notification = 26;</code>
-       */
-      public Builder clearMustSendNotification() {
-        bitField0_ = (bitField0_ & ~0x02000000);
-        mustSendNotification_ = false;
-        onChanged();
-        return this;
-      }
-
-      // @@protoc_insertion_point(builder_scope:ReportIssue)
-    }
-
-    static {
-      defaultInstance = new ReportIssue(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:ReportIssue)
-  }
-
-  public interface ReportIssuesOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:ReportIssues)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>optional int32 component_ref = 1;</code>
-     */
-    boolean hasComponentRef();
-    /**
-     * <code>optional int32 component_ref = 1;</code>
-     */
-    int getComponentRef();
-
-    /**
-     * <code>repeated .ReportIssue list = 2;</code>
-     */
-    java.util.List<org.sonar.batch.protocol.output.BatchOutput.ReportIssue> 
-        getListList();
-    /**
-     * <code>repeated .ReportIssue list = 2;</code>
-     */
-    org.sonar.batch.protocol.output.BatchOutput.ReportIssue getList(int index);
-    /**
-     * <code>repeated .ReportIssue list = 2;</code>
-     */
-    int getListCount();
-    /**
-     * <code>repeated .ReportIssue list = 2;</code>
-     */
-    java.util.List<? extends org.sonar.batch.protocol.output.BatchOutput.ReportIssueOrBuilder> 
-        getListOrBuilderList();
-    /**
-     * <code>repeated .ReportIssue list = 2;</code>
-     */
-    org.sonar.batch.protocol.output.BatchOutput.ReportIssueOrBuilder getListOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code ReportIssues}
-   */
-  public static final class ReportIssues extends
-      com.google.protobuf.GeneratedMessage implements
-      // @@protoc_insertion_point(message_implements:ReportIssues)
-      ReportIssuesOrBuilder {
-    // Use ReportIssues.newBuilder() to construct.
-    private ReportIssues(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private ReportIssues(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final ReportIssues defaultInstance;
-    public static ReportIssues getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    public ReportIssues getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ReportIssues(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 8: {
-              bitField0_ |= 0x00000001;
-              componentRef_ = input.readInt32();
-              break;
-            }
-            case 18: {
-              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-                list_ = new java.util.ArrayList<org.sonar.batch.protocol.output.BatchOutput.ReportIssue>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              list_.add(input.readMessage(org.sonar.batch.protocol.output.BatchOutput.ReportIssue.PARSER, extensionRegistry));
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-          list_ = java.util.Collections.unmodifiableList(list_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return org.sonar.batch.protocol.output.BatchOutput.internal_static_ReportIssues_descriptor;
-    }
-
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return org.sonar.batch.protocol.output.BatchOutput.internal_static_ReportIssues_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              org.sonar.batch.protocol.output.BatchOutput.ReportIssues.class, org.sonar.batch.protocol.output.BatchOutput.ReportIssues.Builder.class);
-    }
-
-    public static com.google.protobuf.Parser<ReportIssues> PARSER =
-        new com.google.protobuf.AbstractParser<ReportIssues>() {
-      public ReportIssues parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ReportIssues(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<ReportIssues> getParserForType() {
-      return PARSER;
-    }
-
-    private int bitField0_;
-    public static final int COMPONENT_REF_FIELD_NUMBER = 1;
-    private int componentRef_;
-    /**
-     * <code>optional int32 component_ref = 1;</code>
-     */
-    public boolean hasComponentRef() {
-      return ((bitField0_ & 0x00000001) == 0x00000001);
-    }
-    /**
-     * <code>optional int32 component_ref = 1;</code>
-     */
-    public int getComponentRef() {
-      return componentRef_;
-    }
-
-    public static final int LIST_FIELD_NUMBER = 2;
-    private java.util.List<org.sonar.batch.protocol.output.BatchOutput.ReportIssue> list_;
-    /**
-     * <code>repeated .ReportIssue list = 2;</code>
-     */
-    public java.util.List<org.sonar.batch.protocol.output.BatchOutput.ReportIssue> getListList() {
-      return list_;
-    }
-    /**
-     * <code>repeated .ReportIssue list = 2;</code>
-     */
-    public java.util.List<? extends org.sonar.batch.protocol.output.BatchOutput.ReportIssueOrBuilder> 
-        getListOrBuilderList() {
-      return list_;
-    }
-    /**
-     * <code>repeated .ReportIssue list = 2;</code>
-     */
-    public int getListCount() {
-      return list_.size();
-    }
-    /**
-     * <code>repeated .ReportIssue list = 2;</code>
-     */
-    public org.sonar.batch.protocol.output.BatchOutput.ReportIssue getList(int index) {
-      return list_.get(index);
-    }
-    /**
-     * <code>repeated .ReportIssue list = 2;</code>
-     */
-    public org.sonar.batch.protocol.output.BatchOutput.ReportIssueOrBuilder getListOrBuilder(
-        int index) {
-      return list_.get(index);
-    }
-
-    private void initFields() {
-      componentRef_ = 0;
-      list_ = java.util.Collections.emptyList();
-    }
-    private byte memoizedIsInitialized = -1;
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      getSerializedSize();
-      if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeInt32(1, componentRef_);
-      }
-      for (int i = 0; i < list_.size(); i++) {
-        output.writeMessage(2, list_.get(i));
-      }
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public int getSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(1, componentRef_);
-      }
-      for (int i = 0; i < list_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, list_.get(i));
-      }
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
-      return size;
-    }
-
-    private static final long serialVersionUID = 0L;
-    @java.lang.Override
-    protected java.lang.Object writeReplace()
-        throws java.io.ObjectStreamException {
-      return super.writeReplace();
-    }
-
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportIssues parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportIssues parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportIssues parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportIssues parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportIssues parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportIssues parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportIssues parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportIssues parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportIssues parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonar.batch.protocol.output.BatchOutput.ReportIssues parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder(org.sonar.batch.protocol.output.BatchOutput.ReportIssues prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    public Builder toBuilder() { return newBuilder(this); }
-
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code ReportIssues}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:ReportIssues)
-        org.sonar.batch.protocol.output.BatchOutput.ReportIssuesOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return org.sonar.batch.protocol.output.BatchOutput.internal_static_ReportIssues_descriptor;
-      }
-
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return org.sonar.batch.protocol.output.BatchOutput.internal_static_ReportIssues_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                org.sonar.batch.protocol.output.BatchOutput.ReportIssues.class, org.sonar.batch.protocol.output.BatchOutput.ReportIssues.Builder.class);
-      }
-
-      // Construct using org.sonar.batch.protocol.output.BatchOutput.ReportIssues.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
-          getListFieldBuilder();
-        }
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      public Builder clear() {
-        super.clear();
-        componentRef_ = 0;
-        bitField0_ = (bitField0_ & ~0x00000001);
-        if (listBuilder_ == null) {
-          list_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-        } else {
-          listBuilder_.clear();
-        }
-        return this;
-      }
-
-      public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return org.sonar.batch.protocol.output.BatchOutput.internal_static_ReportIssues_descriptor;
-      }
-
-      public org.sonar.batch.protocol.output.BatchOutput.ReportIssues getDefaultInstanceForType() {
-        return org.sonar.batch.protocol.output.BatchOutput.ReportIssues.getDefaultInstance();
-      }
-
-      public org.sonar.batch.protocol.output.BatchOutput.ReportIssues build() {
-        org.sonar.batch.protocol.output.BatchOutput.ReportIssues result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      public org.sonar.batch.protocol.output.BatchOutput.ReportIssues buildPartial() {
-        org.sonar.batch.protocol.output.BatchOutput.ReportIssues result = new org.sonar.batch.protocol.output.BatchOutput.ReportIssues(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.componentRef_ = componentRef_;
-        if (listBuilder_ == null) {
-          if (((bitField0_ & 0x00000002) == 0x00000002)) {
-            list_ = java.util.Collections.unmodifiableList(list_);
-            bitField0_ = (bitField0_ & ~0x00000002);
-          }
-          result.list_ = list_;
-        } else {
-          result.list_ = listBuilder_.build();
-        }
-        result.bitField0_ = to_bitField0_;
-        onBuilt();
-        return result;
-      }
-
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.sonar.batch.protocol.output.BatchOutput.ReportIssues) {
-          return mergeFrom((org.sonar.batch.protocol.output.BatchOutput.ReportIssues)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(org.sonar.batch.protocol.output.BatchOutput.ReportIssues other) {
-        if (other == org.sonar.batch.protocol.output.BatchOutput.ReportIssues.getDefaultInstance()) return this;
-        if (other.hasComponentRef()) {
-          setComponentRef(other.getComponentRef());
-        }
-        if (listBuilder_ == null) {
-          if (!other.list_.isEmpty()) {
-            if (list_.isEmpty()) {
-              list_ = other.list_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-            } else {
-              ensureListIsMutable();
-              list_.addAll(other.list_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.list_.isEmpty()) {
-            if (listBuilder_.isEmpty()) {
-              listBuilder_.dispose();
-              listBuilder_ = null;
-              list_ = other.list_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-              listBuilder_ = 
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
-                   getListFieldBuilder() : null;
-            } else {
-              listBuilder_.addAllMessages(other.list_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        org.sonar.batch.protocol.output.BatchOutput.ReportIssues parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.sonar.batch.protocol.output.BatchOutput.ReportIssues) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private int componentRef_ ;
-      /**
-       * <code>optional int32 component_ref = 1;</code>
-       */
-      public boolean hasComponentRef() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
-       * <code>optional int32 component_ref = 1;</code>
-       */
-      public int getComponentRef() {
-        return componentRef_;
-      }
-      /**
-       * <code>optional int32 component_ref = 1;</code>
-       */
-      public Builder setComponentRef(int value) {
-        bitField0_ |= 0x00000001;
-        componentRef_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional int32 component_ref = 1;</code>
-       */
-      public Builder clearComponentRef() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        componentRef_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private java.util.List<org.sonar.batch.protocol.output.BatchOutput.ReportIssue> list_ =
-        java.util.Collections.emptyList();
-      private void ensureListIsMutable() {
-        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
-          list_ = new java.util.ArrayList<org.sonar.batch.protocol.output.BatchOutput.ReportIssue>(list_);
-          bitField0_ |= 0x00000002;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.sonar.batch.protocol.output.BatchOutput.ReportIssue, org.sonar.batch.protocol.output.BatchOutput.ReportIssue.Builder, org.sonar.batch.protocol.output.BatchOutput.ReportIssueOrBuilder> listBuilder_;
-
-      /**
-       * <code>repeated .ReportIssue list = 2;</code>
-       */
-      public java.util.List<org.sonar.batch.protocol.output.BatchOutput.ReportIssue> getListList() {
-        if (listBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(list_);
-        } else {
-          return listBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .ReportIssue list = 2;</code>
-       */
-      public int getListCount() {
-        if (listBuilder_ == null) {
-          return list_.size();
-        } else {
-          return listBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .ReportIssue list = 2;</code>
-       */
-      public org.sonar.batch.protocol.output.BatchOutput.ReportIssue getList(int index) {
-        if (listBuilder_ == null) {
-          return list_.get(index);
-        } else {
-          return listBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .ReportIssue list = 2;</code>
-       */
-      public Builder setList(
-          int index, org.sonar.batch.protocol.output.BatchOutput.ReportIssue value) {
-        if (listBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureListIsMutable();
-          list_.set(index, value);
-          onChanged();
-        } else {
-          listBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .ReportIssue list = 2;</code>
-       */
-      public Builder setList(
-          int index, org.sonar.batch.protocol.output.BatchOutput.ReportIssue.Builder builderForValue) {
-        if (listBuilder_ == null) {
-          ensureListIsMutable();
-          list_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          listBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .ReportIssue list = 2;</code>
-       */
-      public Builder addList(org.sonar.batch.protocol.output.BatchOutput.ReportIssue value) {
-        if (listBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureListIsMutable();
-          list_.add(value);
-          onChanged();
-        } else {
-          listBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .ReportIssue list = 2;</code>
-       */
-      public Builder addList(
-          int index, org.sonar.batch.protocol.output.BatchOutput.ReportIssue value) {
-        if (listBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureListIsMutable();
-          list_.add(index, value);
-          onChanged();
-        } else {
-          listBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .ReportIssue list = 2;</code>
-       */
-      public Builder addList(
-          org.sonar.batch.protocol.output.BatchOutput.ReportIssue.Builder builderForValue) {
-        if (listBuilder_ == null) {
-          ensureListIsMutable();
-          list_.add(builderForValue.build());
-          onChanged();
-        } else {
-          listBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .ReportIssue list = 2;</code>
-       */
-      public Builder addList(
-          int index, org.sonar.batch.protocol.output.BatchOutput.ReportIssue.Builder builderForValue) {
-        if (listBuilder_ == null) {
-          ensureListIsMutable();
-          list_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          listBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .ReportIssue list = 2;</code>
-       */
-      public Builder addAllList(
-          java.lang.Iterable<? extends org.sonar.batch.protocol.output.BatchOutput.ReportIssue> values) {
-        if (listBuilder_ == null) {
-          ensureListIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, list_);
-          onChanged();
-        } else {
-          listBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .ReportIssue list = 2;</code>
-       */
-      public Builder clearList() {
-        if (listBuilder_ == null) {
-          list_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-          onChanged();
-        } else {
-          listBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .ReportIssue list = 2;</code>
-       */
-      public Builder removeList(int index) {
-        if (listBuilder_ == null) {
-          ensureListIsMutable();
-          list_.remove(index);
-          onChanged();
-        } else {
-          listBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .ReportIssue list = 2;</code>
-       */
-      public org.sonar.batch.protocol.output.BatchOutput.ReportIssue.Builder getListBuilder(
-          int index) {
-        return getListFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .ReportIssue list = 2;</code>
-       */
-      public org.sonar.batch.protocol.output.BatchOutput.ReportIssueOrBuilder getListOrBuilder(
-          int index) {
-        if (listBuilder_ == null) {
-          return list_.get(index);  } else {
-          return listBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .ReportIssue list = 2;</code>
-       */
-      public java.util.List<? extends org.sonar.batch.protocol.output.BatchOutput.ReportIssueOrBuilder> 
-           getListOrBuilderList() {
-        if (listBuilder_ != null) {
-          return listBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(list_);
-        }
-      }
-      /**
-       * <code>repeated .ReportIssue list = 2;</code>
-       */
-      public org.sonar.batch.protocol.output.BatchOutput.ReportIssue.Builder addListBuilder() {
-        return getListFieldBuilder().addBuilder(
-            org.sonar.batch.protocol.output.BatchOutput.ReportIssue.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .ReportIssue list = 2;</code>
-       */
-      public org.sonar.batch.protocol.output.BatchOutput.ReportIssue.Builder addListBuilder(
-          int index) {
-        return getListFieldBuilder().addBuilder(
-            index, org.sonar.batch.protocol.output.BatchOutput.ReportIssue.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .ReportIssue list = 2;</code>
-       */
-      public java.util.List<org.sonar.batch.protocol.output.BatchOutput.ReportIssue.Builder> 
-           getListBuilderList() {
-        return getListFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.sonar.batch.protocol.output.BatchOutput.ReportIssue, org.sonar.batch.protocol.output.BatchOutput.ReportIssue.Builder, org.sonar.batch.protocol.output.BatchOutput.ReportIssueOrBuilder> 
-          getListFieldBuilder() {
-        if (listBuilder_ == null) {
-          listBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              org.sonar.batch.protocol.output.BatchOutput.ReportIssue, org.sonar.batch.protocol.output.BatchOutput.ReportIssue.Builder, org.sonar.batch.protocol.output.BatchOutput.ReportIssueOrBuilder>(
-                  list_,
-                  ((bitField0_ & 0x00000002) == 0x00000002),
-                  getParentForChildren(),
-                  isClean());
-          list_ = null;
-        }
-        return listBuilder_;
-      }
-
-      // @@protoc_insertion_point(builder_scope:ReportIssues)
-    }
-
-    static {
-      defaultInstance = new ReportIssues(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:ReportIssues)
-  }
-
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_ReportMetadata_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
-      internal_static_ReportMetadata_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_ReportComponent_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
-      internal_static_ReportComponent_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_ReportIssue_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
-      internal_static_ReportIssue_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_ReportIssues_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
-      internal_static_ReportIssues_fieldAccessorTable;
-
-  public static com.google.protobuf.Descriptors.FileDescriptor
-      getDescriptor() {
-    return descriptor;
-  }
-  private static com.google.protobuf.Descriptors.FileDescriptor
-      descriptor;
-  static {
-    java.lang.String[] descriptorData = {
-      "\n\022batch_output.proto\032\017constants.proto\"X\n" +
-      "\016ReportMetadata\022\025\n\ranalysis_date\030\001 \001(\003\022\023" +
-      "\n\013project_key\030\002 \001(\t\022\032\n\022root_component_re" +
-      "f\030\003 \001(\005\"\262\001\n\017ReportComponent\022\013\n\003ref\030\001 \001(\005" +
-      "\022\014\n\004path\030\002 \001(\t\022\014\n\004name\030\003 \001(\t\022\034\n\004type\030\004 \001" +
-      "(\0162\016.ComponentType\022\017\n\007is_test\030\005 \001(\010\022\020\n\010l" +
-      "anguage\030\006 \001(\t\022\022\n\nchild_refs\030\007 \003(\005\022\023\n\013sna" +
-      "pshot_id\030\010 \001(\005\022\014\n\004uuid\030\t \001(\t\"\240\004\n\013ReportI" +
-      "ssue\022\027\n\017rule_repository\030\001 \001(\t\022\020\n\010rule_ke" +
-      "y\030\002 \001(\t\022\014\n\004line\030\003 \001(\005\022\013\n\003msg\030\004 \001(\t\022\033\n\010se",
-      "verity\030\005 \001(\0162\t.Severity\022\014\n\004tags\030\006 \003(\t\022\025\n" +
-      "\reffort_to_fix\030\007 \001(\001\022\016\n\006is_new\030\010 \001(\010\022\014\n\004" +
-      "uuid\030\t \001(\t\022\027\n\017debt_in_minutes\030\n \001(\003\022\022\n\nr" +
-      "esolution\030\013 \001(\t\022\016\n\006status\030\014 \001(\t\022\020\n\010check" +
-      "sum\030\r \001(\t\022\027\n\017manual_severity\030\016 \001(\010\022\020\n\010re" +
-      "porter\030\017 \001(\t\022\020\n\010assignee\030\020 \001(\t\022\027\n\017action" +
-      "_plan_key\030\021 \001(\t\022\022\n\nattributes\030\022 \001(\t\022\024\n\014a" +
-      "uthor_login\030\023 \001(\t\022\025\n\rcreation_date\030\024 \001(\003" +
-      "\022\022\n\nclose_date\030\025 \001(\003\022\023\n\013update_date\030\026 \001(" +
-      "\003\022\023\n\013selected_at\030\027 \001(\003\022\023\n\013diff_fields\030\030 ",
-      "\001(\t\022\022\n\nis_changed\030\031 \001(\010\022\036\n\026must_send_not" +
-      "ification\030\032 \001(\010\"A\n\014ReportIssues\022\025\n\rcompo" +
-      "nent_ref\030\001 \001(\005\022\032\n\004list\030\002 \003(\0132\014.ReportIss" +
-      "ueB#\n\037org.sonar.batch.protocol.outputH\001"
-    };
-    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
-        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
-          public com.google.protobuf.ExtensionRegistry assignDescriptors(
-              com.google.protobuf.Descriptors.FileDescriptor root) {
-            descriptor = root;
-            return null;
-          }
-        };
-    com.google.protobuf.Descriptors.FileDescriptor
-      .internalBuildGeneratedFileFrom(descriptorData,
-        new com.google.protobuf.Descriptors.FileDescriptor[] {
-          org.sonar.batch.protocol.Constants.getDescriptor(),
-        }, assigner);
-    internal_static_ReportMetadata_descriptor =
-      getDescriptor().getMessageTypes().get(0);
-    internal_static_ReportMetadata_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-        internal_static_ReportMetadata_descriptor,
-        new java.lang.String[] { "AnalysisDate", "ProjectKey", "RootComponentRef", });
-    internal_static_ReportComponent_descriptor =
-      getDescriptor().getMessageTypes().get(1);
-    internal_static_ReportComponent_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-        internal_static_ReportComponent_descriptor,
-        new java.lang.String[] { "Ref", "Path", "Name", "Type", "IsTest", "Language", "ChildRefs", "SnapshotId", "Uuid", });
-    internal_static_ReportIssue_descriptor =
-      getDescriptor().getMessageTypes().get(2);
-    internal_static_ReportIssue_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-        internal_static_ReportIssue_descriptor,
-        new java.lang.String[] { "RuleRepository", "RuleKey", "Line", "Msg", "Severity", "Tags", "EffortToFix", "IsNew", "Uuid", "DebtInMinutes", "Resolution", "Status", "Checksum", "ManualSeverity", "Reporter", "Assignee", "ActionPlanKey", "Attributes", "AuthorLogin", "CreationDate", "CloseDate", "UpdateDate", "SelectedAt", "DiffFields", "IsChanged", "MustSendNotification", });
-    internal_static_ReportIssues_descriptor =
-      getDescriptor().getMessageTypes().get(3);
-    internal_static_ReportIssues_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-        internal_static_ReportIssues_descriptor,
-        new java.lang.String[] { "ComponentRef", "List", });
-    org.sonar.batch.protocol.Constants.getDescriptor();
-  }
-
-  // @@protoc_insertion_point(outer_class_scope)
-}
diff --git a/sonar-batch-protocol/src/main/gen-java/org/sonar/batch/protocol/output/BatchReport.java b/sonar-batch-protocol/src/main/gen-java/org/sonar/batch/protocol/output/BatchReport.java
new file mode 100644 (file)
index 0000000..23c3a57
--- /dev/null
@@ -0,0 +1,6470 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: batch_report.proto
+
+package org.sonar.batch.protocol.output;
+
+public final class BatchReport {
+  private BatchReport() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+  }
+  public interface MetadataOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:Metadata)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>optional int64 analysis_date = 1;</code>
+     */
+    boolean hasAnalysisDate();
+    /**
+     * <code>optional int64 analysis_date = 1;</code>
+     */
+    long getAnalysisDate();
+
+    /**
+     * <code>optional string project_key = 2;</code>
+     */
+    boolean hasProjectKey();
+    /**
+     * <code>optional string project_key = 2;</code>
+     */
+    java.lang.String getProjectKey();
+    /**
+     * <code>optional string project_key = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getProjectKeyBytes();
+
+    /**
+     * <code>optional int32 root_component_ref = 3;</code>
+     */
+    boolean hasRootComponentRef();
+    /**
+     * <code>optional int32 root_component_ref = 3;</code>
+     */
+    int getRootComponentRef();
+  }
+  /**
+   * Protobuf type {@code Metadata}
+   */
+  public static final class Metadata extends
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:Metadata)
+      MetadataOrBuilder {
+    // Use Metadata.newBuilder() to construct.
+    private Metadata(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Metadata(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Metadata defaultInstance;
+    public static Metadata getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Metadata getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Metadata(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              bitField0_ |= 0x00000001;
+              analysisDate_ = input.readInt64();
+              break;
+            }
+            case 18: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000002;
+              projectKey_ = bs;
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              rootComponentRef_ = input.readInt32();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.sonar.batch.protocol.output.BatchReport.internal_static_Metadata_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.sonar.batch.protocol.output.BatchReport.internal_static_Metadata_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.sonar.batch.protocol.output.BatchReport.Metadata.class, org.sonar.batch.protocol.output.BatchReport.Metadata.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Metadata> PARSER =
+        new com.google.protobuf.AbstractParser<Metadata>() {
+      public Metadata parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Metadata(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Metadata> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    public static final int ANALYSIS_DATE_FIELD_NUMBER = 1;
+    private long analysisDate_;
+    /**
+     * <code>optional int64 analysis_date = 1;</code>
+     */
+    public boolean hasAnalysisDate() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional int64 analysis_date = 1;</code>
+     */
+    public long getAnalysisDate() {
+      return analysisDate_;
+    }
+
+    public static final int PROJECT_KEY_FIELD_NUMBER = 2;
+    private java.lang.Object projectKey_;
+    /**
+     * <code>optional string project_key = 2;</code>
+     */
+    public boolean hasProjectKey() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string project_key = 2;</code>
+     */
+    public java.lang.String getProjectKey() {
+      java.lang.Object ref = projectKey_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          projectKey_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string project_key = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getProjectKeyBytes() {
+      java.lang.Object ref = projectKey_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        projectKey_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int ROOT_COMPONENT_REF_FIELD_NUMBER = 3;
+    private int rootComponentRef_;
+    /**
+     * <code>optional int32 root_component_ref = 3;</code>
+     */
+    public boolean hasRootComponentRef() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional int32 root_component_ref = 3;</code>
+     */
+    public int getRootComponentRef() {
+      return rootComponentRef_;
+    }
+
+    private void initFields() {
+      analysisDate_ = 0L;
+      projectKey_ = "";
+      rootComponentRef_ = 0;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeInt64(1, analysisDate_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getProjectKeyBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeInt32(3, rootComponentRef_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(1, analysisDate_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getProjectKeyBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(3, rootComponentRef_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.sonar.batch.protocol.output.BatchReport.Metadata parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Metadata parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Metadata parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Metadata parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Metadata parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Metadata parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Metadata parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Metadata parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Metadata parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Metadata parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.sonar.batch.protocol.output.BatchReport.Metadata prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code Metadata}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:Metadata)
+        org.sonar.batch.protocol.output.BatchReport.MetadataOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.sonar.batch.protocol.output.BatchReport.internal_static_Metadata_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.sonar.batch.protocol.output.BatchReport.internal_static_Metadata_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.sonar.batch.protocol.output.BatchReport.Metadata.class, org.sonar.batch.protocol.output.BatchReport.Metadata.Builder.class);
+      }
+
+      // Construct using org.sonar.batch.protocol.output.BatchReport.Metadata.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        analysisDate_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        projectKey_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        rootComponentRef_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.sonar.batch.protocol.output.BatchReport.internal_static_Metadata_descriptor;
+      }
+
+      public org.sonar.batch.protocol.output.BatchReport.Metadata getDefaultInstanceForType() {
+        return org.sonar.batch.protocol.output.BatchReport.Metadata.getDefaultInstance();
+      }
+
+      public org.sonar.batch.protocol.output.BatchReport.Metadata build() {
+        org.sonar.batch.protocol.output.BatchReport.Metadata result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.sonar.batch.protocol.output.BatchReport.Metadata buildPartial() {
+        org.sonar.batch.protocol.output.BatchReport.Metadata result = new org.sonar.batch.protocol.output.BatchReport.Metadata(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.analysisDate_ = analysisDate_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.projectKey_ = projectKey_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.rootComponentRef_ = rootComponentRef_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.sonar.batch.protocol.output.BatchReport.Metadata) {
+          return mergeFrom((org.sonar.batch.protocol.output.BatchReport.Metadata)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.sonar.batch.protocol.output.BatchReport.Metadata other) {
+        if (other == org.sonar.batch.protocol.output.BatchReport.Metadata.getDefaultInstance()) return this;
+        if (other.hasAnalysisDate()) {
+          setAnalysisDate(other.getAnalysisDate());
+        }
+        if (other.hasProjectKey()) {
+          bitField0_ |= 0x00000002;
+          projectKey_ = other.projectKey_;
+          onChanged();
+        }
+        if (other.hasRootComponentRef()) {
+          setRootComponentRef(other.getRootComponentRef());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.sonar.batch.protocol.output.BatchReport.Metadata parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.sonar.batch.protocol.output.BatchReport.Metadata) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private long analysisDate_ ;
+      /**
+       * <code>optional int64 analysis_date = 1;</code>
+       */
+      public boolean hasAnalysisDate() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional int64 analysis_date = 1;</code>
+       */
+      public long getAnalysisDate() {
+        return analysisDate_;
+      }
+      /**
+       * <code>optional int64 analysis_date = 1;</code>
+       */
+      public Builder setAnalysisDate(long value) {
+        bitField0_ |= 0x00000001;
+        analysisDate_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 analysis_date = 1;</code>
+       */
+      public Builder clearAnalysisDate() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        analysisDate_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object projectKey_ = "";
+      /**
+       * <code>optional string project_key = 2;</code>
+       */
+      public boolean hasProjectKey() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string project_key = 2;</code>
+       */
+      public java.lang.String getProjectKey() {
+        java.lang.Object ref = projectKey_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            projectKey_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string project_key = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getProjectKeyBytes() {
+        java.lang.Object ref = projectKey_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          projectKey_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string project_key = 2;</code>
+       */
+      public Builder setProjectKey(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        projectKey_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string project_key = 2;</code>
+       */
+      public Builder clearProjectKey() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        projectKey_ = getDefaultInstance().getProjectKey();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string project_key = 2;</code>
+       */
+      public Builder setProjectKeyBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        projectKey_ = value;
+        onChanged();
+        return this;
+      }
+
+      private int rootComponentRef_ ;
+      /**
+       * <code>optional int32 root_component_ref = 3;</code>
+       */
+      public boolean hasRootComponentRef() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional int32 root_component_ref = 3;</code>
+       */
+      public int getRootComponentRef() {
+        return rootComponentRef_;
+      }
+      /**
+       * <code>optional int32 root_component_ref = 3;</code>
+       */
+      public Builder setRootComponentRef(int value) {
+        bitField0_ |= 0x00000004;
+        rootComponentRef_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int32 root_component_ref = 3;</code>
+       */
+      public Builder clearRootComponentRef() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        rootComponentRef_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:Metadata)
+    }
+
+    static {
+      defaultInstance = new Metadata(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:Metadata)
+  }
+
+  public interface ComponentOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:Component)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>optional int32 ref = 1;</code>
+     */
+    boolean hasRef();
+    /**
+     * <code>optional int32 ref = 1;</code>
+     */
+    int getRef();
+
+    /**
+     * <code>optional string path = 2;</code>
+     */
+    boolean hasPath();
+    /**
+     * <code>optional string path = 2;</code>
+     */
+    java.lang.String getPath();
+    /**
+     * <code>optional string path = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getPathBytes();
+
+    /**
+     * <code>optional string name = 3;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>optional string name = 3;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>optional string name = 3;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    /**
+     * <code>optional .ComponentType type = 4;</code>
+     */
+    boolean hasType();
+    /**
+     * <code>optional .ComponentType type = 4;</code>
+     */
+    org.sonar.batch.protocol.Constants.ComponentType getType();
+
+    /**
+     * <code>optional bool is_test = 5;</code>
+     */
+    boolean hasIsTest();
+    /**
+     * <code>optional bool is_test = 5;</code>
+     */
+    boolean getIsTest();
+
+    /**
+     * <code>optional string language = 6;</code>
+     */
+    boolean hasLanguage();
+    /**
+     * <code>optional string language = 6;</code>
+     */
+    java.lang.String getLanguage();
+    /**
+     * <code>optional string language = 6;</code>
+     */
+    com.google.protobuf.ByteString
+        getLanguageBytes();
+
+    /**
+     * <code>repeated int32 child_refs = 7;</code>
+     */
+    java.util.List<java.lang.Integer> getChildRefsList();
+    /**
+     * <code>repeated int32 child_refs = 7;</code>
+     */
+    int getChildRefsCount();
+    /**
+     * <code>repeated int32 child_refs = 7;</code>
+     */
+    int getChildRefs(int index);
+
+    /**
+     * <code>optional int32 snapshot_id = 8;</code>
+     *
+     * <pre>
+     * temporary fields during development of computation stack
+     * </pre>
+     */
+    boolean hasSnapshotId();
+    /**
+     * <code>optional int32 snapshot_id = 8;</code>
+     *
+     * <pre>
+     * temporary fields during development of computation stack
+     * </pre>
+     */
+    int getSnapshotId();
+
+    /**
+     * <code>optional string uuid = 9;</code>
+     */
+    boolean hasUuid();
+    /**
+     * <code>optional string uuid = 9;</code>
+     */
+    java.lang.String getUuid();
+    /**
+     * <code>optional string uuid = 9;</code>
+     */
+    com.google.protobuf.ByteString
+        getUuidBytes();
+  }
+  /**
+   * Protobuf type {@code Component}
+   */
+  public static final class Component extends
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:Component)
+      ComponentOrBuilder {
+    // Use Component.newBuilder() to construct.
+    private Component(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Component(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Component defaultInstance;
+    public static Component getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Component getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Component(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              bitField0_ |= 0x00000001;
+              ref_ = input.readInt32();
+              break;
+            }
+            case 18: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000002;
+              path_ = bs;
+              break;
+            }
+            case 26: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000004;
+              name_ = bs;
+              break;
+            }
+            case 32: {
+              int rawValue = input.readEnum();
+              org.sonar.batch.protocol.Constants.ComponentType value = org.sonar.batch.protocol.Constants.ComponentType.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(4, rawValue);
+              } else {
+                bitField0_ |= 0x00000008;
+                type_ = value;
+              }
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              isTest_ = input.readBool();
+              break;
+            }
+            case 50: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000020;
+              language_ = bs;
+              break;
+            }
+            case 56: {
+              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+                childRefs_ = new java.util.ArrayList<java.lang.Integer>();
+                mutable_bitField0_ |= 0x00000040;
+              }
+              childRefs_.add(input.readInt32());
+              break;
+            }
+            case 58: {
+              int length = input.readRawVarint32();
+              int limit = input.pushLimit(length);
+              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040) && input.getBytesUntilLimit() > 0) {
+                childRefs_ = new java.util.ArrayList<java.lang.Integer>();
+                mutable_bitField0_ |= 0x00000040;
+              }
+              while (input.getBytesUntilLimit() > 0) {
+                childRefs_.add(input.readInt32());
+              }
+              input.popLimit(limit);
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000040;
+              snapshotId_ = input.readInt32();
+              break;
+            }
+            case 74: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000080;
+              uuid_ = bs;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+          childRefs_ = java.util.Collections.unmodifiableList(childRefs_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.sonar.batch.protocol.output.BatchReport.internal_static_Component_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.sonar.batch.protocol.output.BatchReport.internal_static_Component_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.sonar.batch.protocol.output.BatchReport.Component.class, org.sonar.batch.protocol.output.BatchReport.Component.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Component> PARSER =
+        new com.google.protobuf.AbstractParser<Component>() {
+      public Component parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Component(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Component> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    public static final int REF_FIELD_NUMBER = 1;
+    private int ref_;
+    /**
+     * <code>optional int32 ref = 1;</code>
+     */
+    public boolean hasRef() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional int32 ref = 1;</code>
+     */
+    public int getRef() {
+      return ref_;
+    }
+
+    public static final int PATH_FIELD_NUMBER = 2;
+    private java.lang.Object path_;
+    /**
+     * <code>optional string path = 2;</code>
+     */
+    public boolean hasPath() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string path = 2;</code>
+     */
+    public java.lang.String getPath() {
+      java.lang.Object ref = path_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          path_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string path = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getPathBytes() {
+      java.lang.Object ref = path_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        path_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int NAME_FIELD_NUMBER = 3;
+    private java.lang.Object name_;
+    /**
+     * <code>optional string name = 3;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional string name = 3;</code>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string name = 3;</code>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int TYPE_FIELD_NUMBER = 4;
+    private org.sonar.batch.protocol.Constants.ComponentType type_;
+    /**
+     * <code>optional .ComponentType type = 4;</code>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .ComponentType type = 4;</code>
+     */
+    public org.sonar.batch.protocol.Constants.ComponentType getType() {
+      return type_;
+    }
+
+    public static final int IS_TEST_FIELD_NUMBER = 5;
+    private boolean isTest_;
+    /**
+     * <code>optional bool is_test = 5;</code>
+     */
+    public boolean hasIsTest() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional bool is_test = 5;</code>
+     */
+    public boolean getIsTest() {
+      return isTest_;
+    }
+
+    public static final int LANGUAGE_FIELD_NUMBER = 6;
+    private java.lang.Object language_;
+    /**
+     * <code>optional string language = 6;</code>
+     */
+    public boolean hasLanguage() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional string language = 6;</code>
+     */
+    public java.lang.String getLanguage() {
+      java.lang.Object ref = language_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          language_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string language = 6;</code>
+     */
+    public com.google.protobuf.ByteString
+        getLanguageBytes() {
+      java.lang.Object ref = language_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        language_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int CHILD_REFS_FIELD_NUMBER = 7;
+    private java.util.List<java.lang.Integer> childRefs_;
+    /**
+     * <code>repeated int32 child_refs = 7;</code>
+     */
+    public java.util.List<java.lang.Integer>
+        getChildRefsList() {
+      return childRefs_;
+    }
+    /**
+     * <code>repeated int32 child_refs = 7;</code>
+     */
+    public int getChildRefsCount() {
+      return childRefs_.size();
+    }
+    /**
+     * <code>repeated int32 child_refs = 7;</code>
+     */
+    public int getChildRefs(int index) {
+      return childRefs_.get(index);
+    }
+
+    public static final int SNAPSHOT_ID_FIELD_NUMBER = 8;
+    private int snapshotId_;
+    /**
+     * <code>optional int32 snapshot_id = 8;</code>
+     *
+     * <pre>
+     * temporary fields during development of computation stack
+     * </pre>
+     */
+    public boolean hasSnapshotId() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional int32 snapshot_id = 8;</code>
+     *
+     * <pre>
+     * temporary fields during development of computation stack
+     * </pre>
+     */
+    public int getSnapshotId() {
+      return snapshotId_;
+    }
+
+    public static final int UUID_FIELD_NUMBER = 9;
+    private java.lang.Object uuid_;
+    /**
+     * <code>optional string uuid = 9;</code>
+     */
+    public boolean hasUuid() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional string uuid = 9;</code>
+     */
+    public java.lang.String getUuid() {
+      java.lang.Object ref = uuid_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          uuid_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string uuid = 9;</code>
+     */
+    public com.google.protobuf.ByteString
+        getUuidBytes() {
+      java.lang.Object ref = uuid_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        uuid_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      ref_ = 0;
+      path_ = "";
+      name_ = "";
+      type_ = org.sonar.batch.protocol.Constants.ComponentType.PROJECT;
+      isTest_ = false;
+      language_ = "";
+      childRefs_ = java.util.Collections.emptyList();
+      snapshotId_ = 0;
+      uuid_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeInt32(1, ref_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getPathBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(3, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeEnum(4, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeBool(5, isTest_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBytes(6, getLanguageBytes());
+      }
+      for (int i = 0; i < childRefs_.size(); i++) {
+        output.writeInt32(7, childRefs_.get(i));
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeInt32(8, snapshotId_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeBytes(9, getUuidBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(1, ref_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getPathBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(4, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(5, isTest_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, getLanguageBytes());
+      }
+      {
+        int dataSize = 0;
+        for (int i = 0; i < childRefs_.size(); i++) {
+          dataSize += com.google.protobuf.CodedOutputStream
+            .computeInt32SizeNoTag(childRefs_.get(i));
+        }
+        size += dataSize;
+        size += 1 * getChildRefsList().size();
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(8, snapshotId_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(9, getUuidBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.sonar.batch.protocol.output.BatchReport.Component parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Component parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Component parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Component parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Component parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Component parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Component parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Component parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Component parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Component parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.sonar.batch.protocol.output.BatchReport.Component prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code Component}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:Component)
+        org.sonar.batch.protocol.output.BatchReport.ComponentOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.sonar.batch.protocol.output.BatchReport.internal_static_Component_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.sonar.batch.protocol.output.BatchReport.internal_static_Component_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.sonar.batch.protocol.output.BatchReport.Component.class, org.sonar.batch.protocol.output.BatchReport.Component.Builder.class);
+      }
+
+      // Construct using org.sonar.batch.protocol.output.BatchReport.Component.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        ref_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        path_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        type_ = org.sonar.batch.protocol.Constants.ComponentType.PROJECT;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        isTest_ = false;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        language_ = "";
+        bitField0_ = (bitField0_ & ~0x00000020);
+        childRefs_ = java.util.Collections.emptyList();
+        bitField0_ = (bitField0_ & ~0x00000040);
+        snapshotId_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000080);
+        uuid_ = "";
+        bitField0_ = (bitField0_ & ~0x00000100);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.sonar.batch.protocol.output.BatchReport.internal_static_Component_descriptor;
+      }
+
+      public org.sonar.batch.protocol.output.BatchReport.Component getDefaultInstanceForType() {
+        return org.sonar.batch.protocol.output.BatchReport.Component.getDefaultInstance();
+      }
+
+      public org.sonar.batch.protocol.output.BatchReport.Component build() {
+        org.sonar.batch.protocol.output.BatchReport.Component result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.sonar.batch.protocol.output.BatchReport.Component buildPartial() {
+        org.sonar.batch.protocol.output.BatchReport.Component result = new org.sonar.batch.protocol.output.BatchReport.Component(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.ref_ = ref_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.path_ = path_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.isTest_ = isTest_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.language_ = language_;
+        if (((bitField0_ & 0x00000040) == 0x00000040)) {
+          childRefs_ = java.util.Collections.unmodifiableList(childRefs_);
+          bitField0_ = (bitField0_ & ~0x00000040);
+        }
+        result.childRefs_ = childRefs_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.snapshotId_ = snapshotId_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.uuid_ = uuid_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.sonar.batch.protocol.output.BatchReport.Component) {
+          return mergeFrom((org.sonar.batch.protocol.output.BatchReport.Component)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.sonar.batch.protocol.output.BatchReport.Component other) {
+        if (other == org.sonar.batch.protocol.output.BatchReport.Component.getDefaultInstance()) return this;
+        if (other.hasRef()) {
+          setRef(other.getRef());
+        }
+        if (other.hasPath()) {
+          bitField0_ |= 0x00000002;
+          path_ = other.path_;
+          onChanged();
+        }
+        if (other.hasName()) {
+          bitField0_ |= 0x00000004;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasIsTest()) {
+          setIsTest(other.getIsTest());
+        }
+        if (other.hasLanguage()) {
+          bitField0_ |= 0x00000020;
+          language_ = other.language_;
+          onChanged();
+        }
+        if (!other.childRefs_.isEmpty()) {
+          if (childRefs_.isEmpty()) {
+            childRefs_ = other.childRefs_;
+            bitField0_ = (bitField0_ & ~0x00000040);
+          } else {
+            ensureChildRefsIsMutable();
+            childRefs_.addAll(other.childRefs_);
+          }
+          onChanged();
+        }
+        if (other.hasSnapshotId()) {
+          setSnapshotId(other.getSnapshotId());
+        }
+        if (other.hasUuid()) {
+          bitField0_ |= 0x00000100;
+          uuid_ = other.uuid_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.sonar.batch.protocol.output.BatchReport.Component parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.sonar.batch.protocol.output.BatchReport.Component) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private int ref_ ;
+      /**
+       * <code>optional int32 ref = 1;</code>
+       */
+      public boolean hasRef() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional int32 ref = 1;</code>
+       */
+      public int getRef() {
+        return ref_;
+      }
+      /**
+       * <code>optional int32 ref = 1;</code>
+       */
+      public Builder setRef(int value) {
+        bitField0_ |= 0x00000001;
+        ref_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int32 ref = 1;</code>
+       */
+      public Builder clearRef() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        ref_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object path_ = "";
+      /**
+       * <code>optional string path = 2;</code>
+       */
+      public boolean hasPath() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string path = 2;</code>
+       */
+      public java.lang.String getPath() {
+        java.lang.Object ref = path_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            path_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string path = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getPathBytes() {
+        java.lang.Object ref = path_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          path_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string path = 2;</code>
+       */
+      public Builder setPath(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        path_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string path = 2;</code>
+       */
+      public Builder clearPath() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        path_ = getDefaultInstance().getPath();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string path = 2;</code>
+       */
+      public Builder setPathBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        path_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object name_ = "";
+      /**
+       * <code>optional string name = 3;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string name = 3;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            name_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string name = 3;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string name = 3;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 3;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 3;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      private org.sonar.batch.protocol.Constants.ComponentType type_ = org.sonar.batch.protocol.Constants.ComponentType.PROJECT;
+      /**
+       * <code>optional .ComponentType type = 4;</code>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .ComponentType type = 4;</code>
+       */
+      public org.sonar.batch.protocol.Constants.ComponentType getType() {
+        return type_;
+      }
+      /**
+       * <code>optional .ComponentType type = 4;</code>
+       */
+      public Builder setType(org.sonar.batch.protocol.Constants.ComponentType value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000008;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .ComponentType type = 4;</code>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        type_ = org.sonar.batch.protocol.Constants.ComponentType.PROJECT;
+        onChanged();
+        return this;
+      }
+
+      private boolean isTest_ ;
+      /**
+       * <code>optional bool is_test = 5;</code>
+       */
+      public boolean hasIsTest() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional bool is_test = 5;</code>
+       */
+      public boolean getIsTest() {
+        return isTest_;
+      }
+      /**
+       * <code>optional bool is_test = 5;</code>
+       */
+      public Builder setIsTest(boolean value) {
+        bitField0_ |= 0x00000010;
+        isTest_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool is_test = 5;</code>
+       */
+      public Builder clearIsTest() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        isTest_ = false;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object language_ = "";
+      /**
+       * <code>optional string language = 6;</code>
+       */
+      public boolean hasLanguage() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional string language = 6;</code>
+       */
+      public java.lang.String getLanguage() {
+        java.lang.Object ref = language_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            language_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string language = 6;</code>
+       */
+      public com.google.protobuf.ByteString
+          getLanguageBytes() {
+        java.lang.Object ref = language_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          language_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string language = 6;</code>
+       */
+      public Builder setLanguage(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        language_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string language = 6;</code>
+       */
+      public Builder clearLanguage() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        language_ = getDefaultInstance().getLanguage();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string language = 6;</code>
+       */
+      public Builder setLanguageBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        language_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.util.List<java.lang.Integer> childRefs_ = java.util.Collections.emptyList();
+      private void ensureChildRefsIsMutable() {
+        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
+          childRefs_ = new java.util.ArrayList<java.lang.Integer>(childRefs_);
+          bitField0_ |= 0x00000040;
+         }
+      }
+      /**
+       * <code>repeated int32 child_refs = 7;</code>
+       */
+      public java.util.List<java.lang.Integer>
+          getChildRefsList() {
+        return java.util.Collections.unmodifiableList(childRefs_);
+      }
+      /**
+       * <code>repeated int32 child_refs = 7;</code>
+       */
+      public int getChildRefsCount() {
+        return childRefs_.size();
+      }
+      /**
+       * <code>repeated int32 child_refs = 7;</code>
+       */
+      public int getChildRefs(int index) {
+        return childRefs_.get(index);
+      }
+      /**
+       * <code>repeated int32 child_refs = 7;</code>
+       */
+      public Builder setChildRefs(
+          int index, int value) {
+        ensureChildRefsIsMutable();
+        childRefs_.set(index, value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated int32 child_refs = 7;</code>
+       */
+      public Builder addChildRefs(int value) {
+        ensureChildRefsIsMutable();
+        childRefs_.add(value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated int32 child_refs = 7;</code>
+       */
+      public Builder addAllChildRefs(
+          java.lang.Iterable<? extends java.lang.Integer> values) {
+        ensureChildRefsIsMutable();
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, childRefs_);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated int32 child_refs = 7;</code>
+       */
+      public Builder clearChildRefs() {
+        childRefs_ = java.util.Collections.emptyList();
+        bitField0_ = (bitField0_ & ~0x00000040);
+        onChanged();
+        return this;
+      }
+
+      private int snapshotId_ ;
+      /**
+       * <code>optional int32 snapshot_id = 8;</code>
+       *
+       * <pre>
+       * temporary fields during development of computation stack
+       * </pre>
+       */
+      public boolean hasSnapshotId() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional int32 snapshot_id = 8;</code>
+       *
+       * <pre>
+       * temporary fields during development of computation stack
+       * </pre>
+       */
+      public int getSnapshotId() {
+        return snapshotId_;
+      }
+      /**
+       * <code>optional int32 snapshot_id = 8;</code>
+       *
+       * <pre>
+       * temporary fields during development of computation stack
+       * </pre>
+       */
+      public Builder setSnapshotId(int value) {
+        bitField0_ |= 0x00000080;
+        snapshotId_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int32 snapshot_id = 8;</code>
+       *
+       * <pre>
+       * temporary fields during development of computation stack
+       * </pre>
+       */
+      public Builder clearSnapshotId() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        snapshotId_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object uuid_ = "";
+      /**
+       * <code>optional string uuid = 9;</code>
+       */
+      public boolean hasUuid() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional string uuid = 9;</code>
+       */
+      public java.lang.String getUuid() {
+        java.lang.Object ref = uuid_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            uuid_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string uuid = 9;</code>
+       */
+      public com.google.protobuf.ByteString
+          getUuidBytes() {
+        java.lang.Object ref = uuid_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          uuid_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string uuid = 9;</code>
+       */
+      public Builder setUuid(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000100;
+        uuid_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string uuid = 9;</code>
+       */
+      public Builder clearUuid() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        uuid_ = getDefaultInstance().getUuid();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string uuid = 9;</code>
+       */
+      public Builder setUuidBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000100;
+        uuid_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:Component)
+    }
+
+    static {
+      defaultInstance = new Component(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:Component)
+  }
+
+  public interface IssueOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:Issue)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>optional string rule_repository = 1;</code>
+     */
+    boolean hasRuleRepository();
+    /**
+     * <code>optional string rule_repository = 1;</code>
+     */
+    java.lang.String getRuleRepository();
+    /**
+     * <code>optional string rule_repository = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getRuleRepositoryBytes();
+
+    /**
+     * <code>optional string rule_key = 2;</code>
+     */
+    boolean hasRuleKey();
+    /**
+     * <code>optional string rule_key = 2;</code>
+     */
+    java.lang.String getRuleKey();
+    /**
+     * <code>optional string rule_key = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getRuleKeyBytes();
+
+    /**
+     * <code>optional int32 line = 3;</code>
+     */
+    boolean hasLine();
+    /**
+     * <code>optional int32 line = 3;</code>
+     */
+    int getLine();
+
+    /**
+     * <code>optional string msg = 4;</code>
+     */
+    boolean hasMsg();
+    /**
+     * <code>optional string msg = 4;</code>
+     */
+    java.lang.String getMsg();
+    /**
+     * <code>optional string msg = 4;</code>
+     */
+    com.google.protobuf.ByteString
+        getMsgBytes();
+
+    /**
+     * <code>optional .Severity severity = 5;</code>
+     */
+    boolean hasSeverity();
+    /**
+     * <code>optional .Severity severity = 5;</code>
+     */
+    org.sonar.batch.protocol.Constants.Severity getSeverity();
+
+    /**
+     * <code>repeated string tags = 6;</code>
+     */
+    com.google.protobuf.ProtocolStringList
+        getTagsList();
+    /**
+     * <code>repeated string tags = 6;</code>
+     */
+    int getTagsCount();
+    /**
+     * <code>repeated string tags = 6;</code>
+     */
+    java.lang.String getTags(int index);
+    /**
+     * <code>repeated string tags = 6;</code>
+     */
+    com.google.protobuf.ByteString
+        getTagsBytes(int index);
+
+    /**
+     * <code>optional double effort_to_fix = 7;</code>
+     *
+     * <pre>
+     * temporary fields during development of computation stack
+     * </pre>
+     */
+    boolean hasEffortToFix();
+    /**
+     * <code>optional double effort_to_fix = 7;</code>
+     *
+     * <pre>
+     * temporary fields during development of computation stack
+     * </pre>
+     */
+    double getEffortToFix();
+
+    /**
+     * <code>optional bool is_new = 8;</code>
+     */
+    boolean hasIsNew();
+    /**
+     * <code>optional bool is_new = 8;</code>
+     */
+    boolean getIsNew();
+
+    /**
+     * <code>optional string uuid = 9;</code>
+     */
+    boolean hasUuid();
+    /**
+     * <code>optional string uuid = 9;</code>
+     */
+    java.lang.String getUuid();
+    /**
+     * <code>optional string uuid = 9;</code>
+     */
+    com.google.protobuf.ByteString
+        getUuidBytes();
+
+    /**
+     * <code>optional int64 debt_in_minutes = 10;</code>
+     */
+    boolean hasDebtInMinutes();
+    /**
+     * <code>optional int64 debt_in_minutes = 10;</code>
+     */
+    long getDebtInMinutes();
+
+    /**
+     * <code>optional string resolution = 11;</code>
+     */
+    boolean hasResolution();
+    /**
+     * <code>optional string resolution = 11;</code>
+     */
+    java.lang.String getResolution();
+    /**
+     * <code>optional string resolution = 11;</code>
+     */
+    com.google.protobuf.ByteString
+        getResolutionBytes();
+
+    /**
+     * <code>optional string status = 12;</code>
+     */
+    boolean hasStatus();
+    /**
+     * <code>optional string status = 12;</code>
+     */
+    java.lang.String getStatus();
+    /**
+     * <code>optional string status = 12;</code>
+     */
+    com.google.protobuf.ByteString
+        getStatusBytes();
+
+    /**
+     * <code>optional string checksum = 13;</code>
+     */
+    boolean hasChecksum();
+    /**
+     * <code>optional string checksum = 13;</code>
+     */
+    java.lang.String getChecksum();
+    /**
+     * <code>optional string checksum = 13;</code>
+     */
+    com.google.protobuf.ByteString
+        getChecksumBytes();
+
+    /**
+     * <code>optional bool manual_severity = 14;</code>
+     */
+    boolean hasManualSeverity();
+    /**
+     * <code>optional bool manual_severity = 14;</code>
+     */
+    boolean getManualSeverity();
+
+    /**
+     * <code>optional string reporter = 15;</code>
+     */
+    boolean hasReporter();
+    /**
+     * <code>optional string reporter = 15;</code>
+     */
+    java.lang.String getReporter();
+    /**
+     * <code>optional string reporter = 15;</code>
+     */
+    com.google.protobuf.ByteString
+        getReporterBytes();
+
+    /**
+     * <code>optional string assignee = 16;</code>
+     */
+    boolean hasAssignee();
+    /**
+     * <code>optional string assignee = 16;</code>
+     */
+    java.lang.String getAssignee();
+    /**
+     * <code>optional string assignee = 16;</code>
+     */
+    com.google.protobuf.ByteString
+        getAssigneeBytes();
+
+    /**
+     * <code>optional string action_plan_key = 17;</code>
+     */
+    boolean hasActionPlanKey();
+    /**
+     * <code>optional string action_plan_key = 17;</code>
+     */
+    java.lang.String getActionPlanKey();
+    /**
+     * <code>optional string action_plan_key = 17;</code>
+     */
+    com.google.protobuf.ByteString
+        getActionPlanKeyBytes();
+
+    /**
+     * <code>optional string attributes = 18;</code>
+     */
+    boolean hasAttributes();
+    /**
+     * <code>optional string attributes = 18;</code>
+     */
+    java.lang.String getAttributes();
+    /**
+     * <code>optional string attributes = 18;</code>
+     */
+    com.google.protobuf.ByteString
+        getAttributesBytes();
+
+    /**
+     * <code>optional string author_login = 19;</code>
+     */
+    boolean hasAuthorLogin();
+    /**
+     * <code>optional string author_login = 19;</code>
+     */
+    java.lang.String getAuthorLogin();
+    /**
+     * <code>optional string author_login = 19;</code>
+     */
+    com.google.protobuf.ByteString
+        getAuthorLoginBytes();
+
+    /**
+     * <code>optional int64 creation_date = 20;</code>
+     */
+    boolean hasCreationDate();
+    /**
+     * <code>optional int64 creation_date = 20;</code>
+     */
+    long getCreationDate();
+
+    /**
+     * <code>optional int64 close_date = 21;</code>
+     */
+    boolean hasCloseDate();
+    /**
+     * <code>optional int64 close_date = 21;</code>
+     */
+    long getCloseDate();
+
+    /**
+     * <code>optional int64 update_date = 22;</code>
+     */
+    boolean hasUpdateDate();
+    /**
+     * <code>optional int64 update_date = 22;</code>
+     */
+    long getUpdateDate();
+
+    /**
+     * <code>optional int64 selected_at = 23;</code>
+     */
+    boolean hasSelectedAt();
+    /**
+     * <code>optional int64 selected_at = 23;</code>
+     */
+    long getSelectedAt();
+
+    /**
+     * <code>optional string diff_fields = 24;</code>
+     */
+    boolean hasDiffFields();
+    /**
+     * <code>optional string diff_fields = 24;</code>
+     */
+    java.lang.String getDiffFields();
+    /**
+     * <code>optional string diff_fields = 24;</code>
+     */
+    com.google.protobuf.ByteString
+        getDiffFieldsBytes();
+
+    /**
+     * <code>optional bool is_changed = 25;</code>
+     */
+    boolean hasIsChanged();
+    /**
+     * <code>optional bool is_changed = 25;</code>
+     */
+    boolean getIsChanged();
+
+    /**
+     * <code>optional bool must_send_notification = 26;</code>
+     */
+    boolean hasMustSendNotification();
+    /**
+     * <code>optional bool must_send_notification = 26;</code>
+     */
+    boolean getMustSendNotification();
+  }
+  /**
+   * Protobuf type {@code Issue}
+   */
+  public static final class Issue extends
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:Issue)
+      IssueOrBuilder {
+    // Use Issue.newBuilder() to construct.
+    private Issue(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Issue(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Issue defaultInstance;
+    public static Issue getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Issue getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Issue(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000001;
+              ruleRepository_ = bs;
+              break;
+            }
+            case 18: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000002;
+              ruleKey_ = bs;
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              line_ = input.readInt32();
+              break;
+            }
+            case 34: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000008;
+              msg_ = bs;
+              break;
+            }
+            case 40: {
+              int rawValue = input.readEnum();
+              org.sonar.batch.protocol.Constants.Severity value = org.sonar.batch.protocol.Constants.Severity.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(5, rawValue);
+              } else {
+                bitField0_ |= 0x00000010;
+                severity_ = value;
+              }
+              break;
+            }
+            case 50: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+                tags_ = new com.google.protobuf.LazyStringArrayList();
+                mutable_bitField0_ |= 0x00000020;
+              }
+              tags_.add(bs);
+              break;
+            }
+            case 57: {
+              bitField0_ |= 0x00000020;
+              effortToFix_ = input.readDouble();
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000040;
+              isNew_ = input.readBool();
+              break;
+            }
+            case 74: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000080;
+              uuid_ = bs;
+              break;
+            }
+            case 80: {
+              bitField0_ |= 0x00000100;
+              debtInMinutes_ = input.readInt64();
+              break;
+            }
+            case 90: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000200;
+              resolution_ = bs;
+              break;
+            }
+            case 98: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000400;
+              status_ = bs;
+              break;
+            }
+            case 106: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000800;
+              checksum_ = bs;
+              break;
+            }
+            case 112: {
+              bitField0_ |= 0x00001000;
+              manualSeverity_ = input.readBool();
+              break;
+            }
+            case 122: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00002000;
+              reporter_ = bs;
+              break;
+            }
+            case 130: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00004000;
+              assignee_ = bs;
+              break;
+            }
+            case 138: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00008000;
+              actionPlanKey_ = bs;
+              break;
+            }
+            case 146: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00010000;
+              attributes_ = bs;
+              break;
+            }
+            case 154: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00020000;
+              authorLogin_ = bs;
+              break;
+            }
+            case 160: {
+              bitField0_ |= 0x00040000;
+              creationDate_ = input.readInt64();
+              break;
+            }
+            case 168: {
+              bitField0_ |= 0x00080000;
+              closeDate_ = input.readInt64();
+              break;
+            }
+            case 176: {
+              bitField0_ |= 0x00100000;
+              updateDate_ = input.readInt64();
+              break;
+            }
+            case 184: {
+              bitField0_ |= 0x00200000;
+              selectedAt_ = input.readInt64();
+              break;
+            }
+            case 194: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00400000;
+              diffFields_ = bs;
+              break;
+            }
+            case 200: {
+              bitField0_ |= 0x00800000;
+              isChanged_ = input.readBool();
+              break;
+            }
+            case 208: {
+              bitField0_ |= 0x01000000;
+              mustSendNotification_ = input.readBool();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+          tags_ = tags_.getUnmodifiableView();
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.sonar.batch.protocol.output.BatchReport.internal_static_Issue_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.sonar.batch.protocol.output.BatchReport.internal_static_Issue_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.sonar.batch.protocol.output.BatchReport.Issue.class, org.sonar.batch.protocol.output.BatchReport.Issue.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Issue> PARSER =
+        new com.google.protobuf.AbstractParser<Issue>() {
+      public Issue parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Issue(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Issue> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    public static final int RULE_REPOSITORY_FIELD_NUMBER = 1;
+    private java.lang.Object ruleRepository_;
+    /**
+     * <code>optional string rule_repository = 1;</code>
+     */
+    public boolean hasRuleRepository() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional string rule_repository = 1;</code>
+     */
+    public java.lang.String getRuleRepository() {
+      java.lang.Object ref = ruleRepository_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          ruleRepository_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string rule_repository = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getRuleRepositoryBytes() {
+      java.lang.Object ref = ruleRepository_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        ruleRepository_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int RULE_KEY_FIELD_NUMBER = 2;
+    private java.lang.Object ruleKey_;
+    /**
+     * <code>optional string rule_key = 2;</code>
+     */
+    public boolean hasRuleKey() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string rule_key = 2;</code>
+     */
+    public java.lang.String getRuleKey() {
+      java.lang.Object ref = ruleKey_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          ruleKey_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string rule_key = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getRuleKeyBytes() {
+      java.lang.Object ref = ruleKey_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        ruleKey_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int LINE_FIELD_NUMBER = 3;
+    private int line_;
+    /**
+     * <code>optional int32 line = 3;</code>
+     */
+    public boolean hasLine() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional int32 line = 3;</code>
+     */
+    public int getLine() {
+      return line_;
+    }
+
+    public static final int MSG_FIELD_NUMBER = 4;
+    private java.lang.Object msg_;
+    /**
+     * <code>optional string msg = 4;</code>
+     */
+    public boolean hasMsg() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional string msg = 4;</code>
+     */
+    public java.lang.String getMsg() {
+      java.lang.Object ref = msg_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          msg_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string msg = 4;</code>
+     */
+    public com.google.protobuf.ByteString
+        getMsgBytes() {
+      java.lang.Object ref = msg_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        msg_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int SEVERITY_FIELD_NUMBER = 5;
+    private org.sonar.batch.protocol.Constants.Severity severity_;
+    /**
+     * <code>optional .Severity severity = 5;</code>
+     */
+    public boolean hasSeverity() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .Severity severity = 5;</code>
+     */
+    public org.sonar.batch.protocol.Constants.Severity getSeverity() {
+      return severity_;
+    }
+
+    public static final int TAGS_FIELD_NUMBER = 6;
+    private com.google.protobuf.LazyStringList tags_;
+    /**
+     * <code>repeated string tags = 6;</code>
+     */
+    public com.google.protobuf.ProtocolStringList
+        getTagsList() {
+      return tags_;
+    }
+    /**
+     * <code>repeated string tags = 6;</code>
+     */
+    public int getTagsCount() {
+      return tags_.size();
+    }
+    /**
+     * <code>repeated string tags = 6;</code>
+     */
+    public java.lang.String getTags(int index) {
+      return tags_.get(index);
+    }
+    /**
+     * <code>repeated string tags = 6;</code>
+     */
+    public com.google.protobuf.ByteString
+        getTagsBytes(int index) {
+      return tags_.getByteString(index);
+    }
+
+    public static final int EFFORT_TO_FIX_FIELD_NUMBER = 7;
+    private double effortToFix_;
+    /**
+     * <code>optional double effort_to_fix = 7;</code>
+     *
+     * <pre>
+     * temporary fields during development of computation stack
+     * </pre>
+     */
+    public boolean hasEffortToFix() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional double effort_to_fix = 7;</code>
+     *
+     * <pre>
+     * temporary fields during development of computation stack
+     * </pre>
+     */
+    public double getEffortToFix() {
+      return effortToFix_;
+    }
+
+    public static final int IS_NEW_FIELD_NUMBER = 8;
+    private boolean isNew_;
+    /**
+     * <code>optional bool is_new = 8;</code>
+     */
+    public boolean hasIsNew() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional bool is_new = 8;</code>
+     */
+    public boolean getIsNew() {
+      return isNew_;
+    }
+
+    public static final int UUID_FIELD_NUMBER = 9;
+    private java.lang.Object uuid_;
+    /**
+     * <code>optional string uuid = 9;</code>
+     */
+    public boolean hasUuid() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional string uuid = 9;</code>
+     */
+    public java.lang.String getUuid() {
+      java.lang.Object ref = uuid_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          uuid_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string uuid = 9;</code>
+     */
+    public com.google.protobuf.ByteString
+        getUuidBytes() {
+      java.lang.Object ref = uuid_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        uuid_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int DEBT_IN_MINUTES_FIELD_NUMBER = 10;
+    private long debtInMinutes_;
+    /**
+     * <code>optional int64 debt_in_minutes = 10;</code>
+     */
+    public boolean hasDebtInMinutes() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional int64 debt_in_minutes = 10;</code>
+     */
+    public long getDebtInMinutes() {
+      return debtInMinutes_;
+    }
+
+    public static final int RESOLUTION_FIELD_NUMBER = 11;
+    private java.lang.Object resolution_;
+    /**
+     * <code>optional string resolution = 11;</code>
+     */
+    public boolean hasResolution() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional string resolution = 11;</code>
+     */
+    public java.lang.String getResolution() {
+      java.lang.Object ref = resolution_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          resolution_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string resolution = 11;</code>
+     */
+    public com.google.protobuf.ByteString
+        getResolutionBytes() {
+      java.lang.Object ref = resolution_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        resolution_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int STATUS_FIELD_NUMBER = 12;
+    private java.lang.Object status_;
+    /**
+     * <code>optional string status = 12;</code>
+     */
+    public boolean hasStatus() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional string status = 12;</code>
+     */
+    public java.lang.String getStatus() {
+      java.lang.Object ref = status_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          status_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string status = 12;</code>
+     */
+    public com.google.protobuf.ByteString
+        getStatusBytes() {
+      java.lang.Object ref = status_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        status_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int CHECKSUM_FIELD_NUMBER = 13;
+    private java.lang.Object checksum_;
+    /**
+     * <code>optional string checksum = 13;</code>
+     */
+    public boolean hasChecksum() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional string checksum = 13;</code>
+     */
+    public java.lang.String getChecksum() {
+      java.lang.Object ref = checksum_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          checksum_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string checksum = 13;</code>
+     */
+    public com.google.protobuf.ByteString
+        getChecksumBytes() {
+      java.lang.Object ref = checksum_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        checksum_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int MANUAL_SEVERITY_FIELD_NUMBER = 14;
+    private boolean manualSeverity_;
+    /**
+     * <code>optional bool manual_severity = 14;</code>
+     */
+    public boolean hasManualSeverity() {
+      return ((bitField0_ & 0x00001000) == 0x00001000);
+    }
+    /**
+     * <code>optional bool manual_severity = 14;</code>
+     */
+    public boolean getManualSeverity() {
+      return manualSeverity_;
+    }
+
+    public static final int REPORTER_FIELD_NUMBER = 15;
+    private java.lang.Object reporter_;
+    /**
+     * <code>optional string reporter = 15;</code>
+     */
+    public boolean hasReporter() {
+      return ((bitField0_ & 0x00002000) == 0x00002000);
+    }
+    /**
+     * <code>optional string reporter = 15;</code>
+     */
+    public java.lang.String getReporter() {
+      java.lang.Object ref = reporter_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          reporter_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string reporter = 15;</code>
+     */
+    public com.google.protobuf.ByteString
+        getReporterBytes() {
+      java.lang.Object ref = reporter_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        reporter_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int ASSIGNEE_FIELD_NUMBER = 16;
+    private java.lang.Object assignee_;
+    /**
+     * <code>optional string assignee = 16;</code>
+     */
+    public boolean hasAssignee() {
+      return ((bitField0_ & 0x00004000) == 0x00004000);
+    }
+    /**
+     * <code>optional string assignee = 16;</code>
+     */
+    public java.lang.String getAssignee() {
+      java.lang.Object ref = assignee_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          assignee_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string assignee = 16;</code>
+     */
+    public com.google.protobuf.ByteString
+        getAssigneeBytes() {
+      java.lang.Object ref = assignee_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        assignee_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int ACTION_PLAN_KEY_FIELD_NUMBER = 17;
+    private java.lang.Object actionPlanKey_;
+    /**
+     * <code>optional string action_plan_key = 17;</code>
+     */
+    public boolean hasActionPlanKey() {
+      return ((bitField0_ & 0x00008000) == 0x00008000);
+    }
+    /**
+     * <code>optional string action_plan_key = 17;</code>
+     */
+    public java.lang.String getActionPlanKey() {
+      java.lang.Object ref = actionPlanKey_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          actionPlanKey_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string action_plan_key = 17;</code>
+     */
+    public com.google.protobuf.ByteString
+        getActionPlanKeyBytes() {
+      java.lang.Object ref = actionPlanKey_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        actionPlanKey_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int ATTRIBUTES_FIELD_NUMBER = 18;
+    private java.lang.Object attributes_;
+    /**
+     * <code>optional string attributes = 18;</code>
+     */
+    public boolean hasAttributes() {
+      return ((bitField0_ & 0x00010000) == 0x00010000);
+    }
+    /**
+     * <code>optional string attributes = 18;</code>
+     */
+    public java.lang.String getAttributes() {
+      java.lang.Object ref = attributes_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          attributes_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string attributes = 18;</code>
+     */
+    public com.google.protobuf.ByteString
+        getAttributesBytes() {
+      java.lang.Object ref = attributes_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        attributes_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int AUTHOR_LOGIN_FIELD_NUMBER = 19;
+    private java.lang.Object authorLogin_;
+    /**
+     * <code>optional string author_login = 19;</code>
+     */
+    public boolean hasAuthorLogin() {
+      return ((bitField0_ & 0x00020000) == 0x00020000);
+    }
+    /**
+     * <code>optional string author_login = 19;</code>
+     */
+    public java.lang.String getAuthorLogin() {
+      java.lang.Object ref = authorLogin_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          authorLogin_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string author_login = 19;</code>
+     */
+    public com.google.protobuf.ByteString
+        getAuthorLoginBytes() {
+      java.lang.Object ref = authorLogin_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        authorLogin_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int CREATION_DATE_FIELD_NUMBER = 20;
+    private long creationDate_;
+    /**
+     * <code>optional int64 creation_date = 20;</code>
+     */
+    public boolean hasCreationDate() {
+      return ((bitField0_ & 0x00040000) == 0x00040000);
+    }
+    /**
+     * <code>optional int64 creation_date = 20;</code>
+     */
+    public long getCreationDate() {
+      return creationDate_;
+    }
+
+    public static final int CLOSE_DATE_FIELD_NUMBER = 21;
+    private long closeDate_;
+    /**
+     * <code>optional int64 close_date = 21;</code>
+     */
+    public boolean hasCloseDate() {
+      return ((bitField0_ & 0x00080000) == 0x00080000);
+    }
+    /**
+     * <code>optional int64 close_date = 21;</code>
+     */
+    public long getCloseDate() {
+      return closeDate_;
+    }
+
+    public static final int UPDATE_DATE_FIELD_NUMBER = 22;
+    private long updateDate_;
+    /**
+     * <code>optional int64 update_date = 22;</code>
+     */
+    public boolean hasUpdateDate() {
+      return ((bitField0_ & 0x00100000) == 0x00100000);
+    }
+    /**
+     * <code>optional int64 update_date = 22;</code>
+     */
+    public long getUpdateDate() {
+      return updateDate_;
+    }
+
+    public static final int SELECTED_AT_FIELD_NUMBER = 23;
+    private long selectedAt_;
+    /**
+     * <code>optional int64 selected_at = 23;</code>
+     */
+    public boolean hasSelectedAt() {
+      return ((bitField0_ & 0x00200000) == 0x00200000);
+    }
+    /**
+     * <code>optional int64 selected_at = 23;</code>
+     */
+    public long getSelectedAt() {
+      return selectedAt_;
+    }
+
+    public static final int DIFF_FIELDS_FIELD_NUMBER = 24;
+    private java.lang.Object diffFields_;
+    /**
+     * <code>optional string diff_fields = 24;</code>
+     */
+    public boolean hasDiffFields() {
+      return ((bitField0_ & 0x00400000) == 0x00400000);
+    }
+    /**
+     * <code>optional string diff_fields = 24;</code>
+     */
+    public java.lang.String getDiffFields() {
+      java.lang.Object ref = diffFields_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          diffFields_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string diff_fields = 24;</code>
+     */
+    public com.google.protobuf.ByteString
+        getDiffFieldsBytes() {
+      java.lang.Object ref = diffFields_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        diffFields_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int IS_CHANGED_FIELD_NUMBER = 25;
+    private boolean isChanged_;
+    /**
+     * <code>optional bool is_changed = 25;</code>
+     */
+    public boolean hasIsChanged() {
+      return ((bitField0_ & 0x00800000) == 0x00800000);
+    }
+    /**
+     * <code>optional bool is_changed = 25;</code>
+     */
+    public boolean getIsChanged() {
+      return isChanged_;
+    }
+
+    public static final int MUST_SEND_NOTIFICATION_FIELD_NUMBER = 26;
+    private boolean mustSendNotification_;
+    /**
+     * <code>optional bool must_send_notification = 26;</code>
+     */
+    public boolean hasMustSendNotification() {
+      return ((bitField0_ & 0x01000000) == 0x01000000);
+    }
+    /**
+     * <code>optional bool must_send_notification = 26;</code>
+     */
+    public boolean getMustSendNotification() {
+      return mustSendNotification_;
+    }
+
+    private void initFields() {
+      ruleRepository_ = "";
+      ruleKey_ = "";
+      line_ = 0;
+      msg_ = "";
+      severity_ = org.sonar.batch.protocol.Constants.Severity.INFO;
+      tags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      effortToFix_ = 0D;
+      isNew_ = false;
+      uuid_ = "";
+      debtInMinutes_ = 0L;
+      resolution_ = "";
+      status_ = "";
+      checksum_ = "";
+      manualSeverity_ = false;
+      reporter_ = "";
+      assignee_ = "";
+      actionPlanKey_ = "";
+      attributes_ = "";
+      authorLogin_ = "";
+      creationDate_ = 0L;
+      closeDate_ = 0L;
+      updateDate_ = 0L;
+      selectedAt_ = 0L;
+      diffFields_ = "";
+      isChanged_ = false;
+      mustSendNotification_ = false;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getRuleRepositoryBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getRuleKeyBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeInt32(3, line_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBytes(4, getMsgBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeEnum(5, severity_.getNumber());
+      }
+      for (int i = 0; i < tags_.size(); i++) {
+        output.writeBytes(6, tags_.getByteString(i));
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeDouble(7, effortToFix_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeBool(8, isNew_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeBytes(9, getUuidBytes());
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeInt64(10, debtInMinutes_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeBytes(11, getResolutionBytes());
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeBytes(12, getStatusBytes());
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeBytes(13, getChecksumBytes());
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        output.writeBool(14, manualSeverity_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        output.writeBytes(15, getReporterBytes());
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        output.writeBytes(16, getAssigneeBytes());
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        output.writeBytes(17, getActionPlanKeyBytes());
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        output.writeBytes(18, getAttributesBytes());
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        output.writeBytes(19, getAuthorLoginBytes());
+      }
+      if (((bitField0_ & 0x00040000) == 0x00040000)) {
+        output.writeInt64(20, creationDate_);
+      }
+      if (((bitField0_ & 0x00080000) == 0x00080000)) {
+        output.writeInt64(21, closeDate_);
+      }
+      if (((bitField0_ & 0x00100000) == 0x00100000)) {
+        output.writeInt64(22, updateDate_);
+      }
+      if (((bitField0_ & 0x00200000) == 0x00200000)) {
+        output.writeInt64(23, selectedAt_);
+      }
+      if (((bitField0_ & 0x00400000) == 0x00400000)) {
+        output.writeBytes(24, getDiffFieldsBytes());
+      }
+      if (((bitField0_ & 0x00800000) == 0x00800000)) {
+        output.writeBool(25, isChanged_);
+      }
+      if (((bitField0_ & 0x01000000) == 0x01000000)) {
+        output.writeBool(26, mustSendNotification_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getRuleRepositoryBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getRuleKeyBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(3, line_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, getMsgBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(5, severity_.getNumber());
+      }
+      {
+        int dataSize = 0;
+        for (int i = 0; i < tags_.size(); i++) {
+          dataSize += com.google.protobuf.CodedOutputStream
+            .computeBytesSizeNoTag(tags_.getByteString(i));
+        }
+        size += dataSize;
+        size += 1 * getTagsList().size();
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(7, effortToFix_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(8, isNew_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(9, getUuidBytes());
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(10, debtInMinutes_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(11, getResolutionBytes());
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(12, getStatusBytes());
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(13, getChecksumBytes());
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(14, manualSeverity_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(15, getReporterBytes());
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(16, getAssigneeBytes());
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(17, getActionPlanKeyBytes());
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(18, getAttributesBytes());
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(19, getAuthorLoginBytes());
+      }
+      if (((bitField0_ & 0x00040000) == 0x00040000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(20, creationDate_);
+      }
+      if (((bitField0_ & 0x00080000) == 0x00080000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(21, closeDate_);
+      }
+      if (((bitField0_ & 0x00100000) == 0x00100000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(22, updateDate_);
+      }
+      if (((bitField0_ & 0x00200000) == 0x00200000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(23, selectedAt_);
+      }
+      if (((bitField0_ & 0x00400000) == 0x00400000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(24, getDiffFieldsBytes());
+      }
+      if (((bitField0_ & 0x00800000) == 0x00800000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(25, isChanged_);
+      }
+      if (((bitField0_ & 0x01000000) == 0x01000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(26, mustSendNotification_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.sonar.batch.protocol.output.BatchReport.Issue parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Issue parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Issue parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Issue parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Issue parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Issue parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Issue parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Issue parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Issue parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Issue parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.sonar.batch.protocol.output.BatchReport.Issue prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code Issue}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:Issue)
+        org.sonar.batch.protocol.output.BatchReport.IssueOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.sonar.batch.protocol.output.BatchReport.internal_static_Issue_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.sonar.batch.protocol.output.BatchReport.internal_static_Issue_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.sonar.batch.protocol.output.BatchReport.Issue.class, org.sonar.batch.protocol.output.BatchReport.Issue.Builder.class);
+      }
+
+      // Construct using org.sonar.batch.protocol.output.BatchReport.Issue.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        ruleRepository_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        ruleKey_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        line_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        msg_ = "";
+        bitField0_ = (bitField0_ & ~0x00000008);
+        severity_ = org.sonar.batch.protocol.Constants.Severity.INFO;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        tags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        effortToFix_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        isNew_ = false;
+        bitField0_ = (bitField0_ & ~0x00000080);
+        uuid_ = "";
+        bitField0_ = (bitField0_ & ~0x00000100);
+        debtInMinutes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        resolution_ = "";
+        bitField0_ = (bitField0_ & ~0x00000400);
+        status_ = "";
+        bitField0_ = (bitField0_ & ~0x00000800);
+        checksum_ = "";
+        bitField0_ = (bitField0_ & ~0x00001000);
+        manualSeverity_ = false;
+        bitField0_ = (bitField0_ & ~0x00002000);
+        reporter_ = "";
+        bitField0_ = (bitField0_ & ~0x00004000);
+        assignee_ = "";
+        bitField0_ = (bitField0_ & ~0x00008000);
+        actionPlanKey_ = "";
+        bitField0_ = (bitField0_ & ~0x00010000);
+        attributes_ = "";
+        bitField0_ = (bitField0_ & ~0x00020000);
+        authorLogin_ = "";
+        bitField0_ = (bitField0_ & ~0x00040000);
+        creationDate_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00080000);
+        closeDate_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00100000);
+        updateDate_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00200000);
+        selectedAt_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00400000);
+        diffFields_ = "";
+        bitField0_ = (bitField0_ & ~0x00800000);
+        isChanged_ = false;
+        bitField0_ = (bitField0_ & ~0x01000000);
+        mustSendNotification_ = false;
+        bitField0_ = (bitField0_ & ~0x02000000);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.sonar.batch.protocol.output.BatchReport.internal_static_Issue_descriptor;
+      }
+
+      public org.sonar.batch.protocol.output.BatchReport.Issue getDefaultInstanceForType() {
+        return org.sonar.batch.protocol.output.BatchReport.Issue.getDefaultInstance();
+      }
+
+      public org.sonar.batch.protocol.output.BatchReport.Issue build() {
+        org.sonar.batch.protocol.output.BatchReport.Issue result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.sonar.batch.protocol.output.BatchReport.Issue buildPartial() {
+        org.sonar.batch.protocol.output.BatchReport.Issue result = new org.sonar.batch.protocol.output.BatchReport.Issue(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.ruleRepository_ = ruleRepository_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.ruleKey_ = ruleKey_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.line_ = line_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.msg_ = msg_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.severity_ = severity_;
+        if (((bitField0_ & 0x00000020) == 0x00000020)) {
+          tags_ = tags_.getUnmodifiableView();
+          bitField0_ = (bitField0_ & ~0x00000020);
+        }
+        result.tags_ = tags_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.effortToFix_ = effortToFix_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.isNew_ = isNew_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.uuid_ = uuid_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        result.debtInMinutes_ = debtInMinutes_;
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        result.resolution_ = resolution_;
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        result.status_ = status_;
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        result.checksum_ = checksum_;
+        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
+          to_bitField0_ |= 0x00001000;
+        }
+        result.manualSeverity_ = manualSeverity_;
+        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
+          to_bitField0_ |= 0x00002000;
+        }
+        result.reporter_ = reporter_;
+        if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
+          to_bitField0_ |= 0x00004000;
+        }
+        result.assignee_ = assignee_;
+        if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
+          to_bitField0_ |= 0x00008000;
+        }
+        result.actionPlanKey_ = actionPlanKey_;
+        if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
+          to_bitField0_ |= 0x00010000;
+        }
+        result.attributes_ = attributes_;
+        if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
+          to_bitField0_ |= 0x00020000;
+        }
+        result.authorLogin_ = authorLogin_;
+        if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
+          to_bitField0_ |= 0x00040000;
+        }
+        result.creationDate_ = creationDate_;
+        if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
+          to_bitField0_ |= 0x00080000;
+        }
+        result.closeDate_ = closeDate_;
+        if (((from_bitField0_ & 0x00200000) == 0x00200000)) {
+          to_bitField0_ |= 0x00100000;
+        }
+        result.updateDate_ = updateDate_;
+        if (((from_bitField0_ & 0x00400000) == 0x00400000)) {
+          to_bitField0_ |= 0x00200000;
+        }
+        result.selectedAt_ = selectedAt_;
+        if (((from_bitField0_ & 0x00800000) == 0x00800000)) {
+          to_bitField0_ |= 0x00400000;
+        }
+        result.diffFields_ = diffFields_;
+        if (((from_bitField0_ & 0x01000000) == 0x01000000)) {
+          to_bitField0_ |= 0x00800000;
+        }
+        result.isChanged_ = isChanged_;
+        if (((from_bitField0_ & 0x02000000) == 0x02000000)) {
+          to_bitField0_ |= 0x01000000;
+        }
+        result.mustSendNotification_ = mustSendNotification_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.sonar.batch.protocol.output.BatchReport.Issue) {
+          return mergeFrom((org.sonar.batch.protocol.output.BatchReport.Issue)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.sonar.batch.protocol.output.BatchReport.Issue other) {
+        if (other == org.sonar.batch.protocol.output.BatchReport.Issue.getDefaultInstance()) return this;
+        if (other.hasRuleRepository()) {
+          bitField0_ |= 0x00000001;
+          ruleRepository_ = other.ruleRepository_;
+          onChanged();
+        }
+        if (other.hasRuleKey()) {
+          bitField0_ |= 0x00000002;
+          ruleKey_ = other.ruleKey_;
+          onChanged();
+        }
+        if (other.hasLine()) {
+          setLine(other.getLine());
+        }
+        if (other.hasMsg()) {
+          bitField0_ |= 0x00000008;
+          msg_ = other.msg_;
+          onChanged();
+        }
+        if (other.hasSeverity()) {
+          setSeverity(other.getSeverity());
+        }
+        if (!other.tags_.isEmpty()) {
+          if (tags_.isEmpty()) {
+            tags_ = other.tags_;
+            bitField0_ = (bitField0_ & ~0x00000020);
+          } else {
+            ensureTagsIsMutable();
+            tags_.addAll(other.tags_);
+          }
+          onChanged();
+        }
+        if (other.hasEffortToFix()) {
+          setEffortToFix(other.getEffortToFix());
+        }
+        if (other.hasIsNew()) {
+          setIsNew(other.getIsNew());
+        }
+        if (other.hasUuid()) {
+          bitField0_ |= 0x00000100;
+          uuid_ = other.uuid_;
+          onChanged();
+        }
+        if (other.hasDebtInMinutes()) {
+          setDebtInMinutes(other.getDebtInMinutes());
+        }
+        if (other.hasResolution()) {
+          bitField0_ |= 0x00000400;
+          resolution_ = other.resolution_;
+          onChanged();
+        }
+        if (other.hasStatus()) {
+          bitField0_ |= 0x00000800;
+          status_ = other.status_;
+          onChanged();
+        }
+        if (other.hasChecksum()) {
+          bitField0_ |= 0x00001000;
+          checksum_ = other.checksum_;
+          onChanged();
+        }
+        if (other.hasManualSeverity()) {
+          setManualSeverity(other.getManualSeverity());
+        }
+        if (other.hasReporter()) {
+          bitField0_ |= 0x00004000;
+          reporter_ = other.reporter_;
+          onChanged();
+        }
+        if (other.hasAssignee()) {
+          bitField0_ |= 0x00008000;
+          assignee_ = other.assignee_;
+          onChanged();
+        }
+        if (other.hasActionPlanKey()) {
+          bitField0_ |= 0x00010000;
+          actionPlanKey_ = other.actionPlanKey_;
+          onChanged();
+        }
+        if (other.hasAttributes()) {
+          bitField0_ |= 0x00020000;
+          attributes_ = other.attributes_;
+          onChanged();
+        }
+        if (other.hasAuthorLogin()) {
+          bitField0_ |= 0x00040000;
+          authorLogin_ = other.authorLogin_;
+          onChanged();
+        }
+        if (other.hasCreationDate()) {
+          setCreationDate(other.getCreationDate());
+        }
+        if (other.hasCloseDate()) {
+          setCloseDate(other.getCloseDate());
+        }
+        if (other.hasUpdateDate()) {
+          setUpdateDate(other.getUpdateDate());
+        }
+        if (other.hasSelectedAt()) {
+          setSelectedAt(other.getSelectedAt());
+        }
+        if (other.hasDiffFields()) {
+          bitField0_ |= 0x00800000;
+          diffFields_ = other.diffFields_;
+          onChanged();
+        }
+        if (other.hasIsChanged()) {
+          setIsChanged(other.getIsChanged());
+        }
+        if (other.hasMustSendNotification()) {
+          setMustSendNotification(other.getMustSendNotification());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.sonar.batch.protocol.output.BatchReport.Issue parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.sonar.batch.protocol.output.BatchReport.Issue) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private java.lang.Object ruleRepository_ = "";
+      /**
+       * <code>optional string rule_repository = 1;</code>
+       */
+      public boolean hasRuleRepository() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional string rule_repository = 1;</code>
+       */
+      public java.lang.String getRuleRepository() {
+        java.lang.Object ref = ruleRepository_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            ruleRepository_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string rule_repository = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getRuleRepositoryBytes() {
+        java.lang.Object ref = ruleRepository_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          ruleRepository_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string rule_repository = 1;</code>
+       */
+      public Builder setRuleRepository(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        ruleRepository_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string rule_repository = 1;</code>
+       */
+      public Builder clearRuleRepository() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        ruleRepository_ = getDefaultInstance().getRuleRepository();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string rule_repository = 1;</code>
+       */
+      public Builder setRuleRepositoryBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        ruleRepository_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object ruleKey_ = "";
+      /**
+       * <code>optional string rule_key = 2;</code>
+       */
+      public boolean hasRuleKey() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string rule_key = 2;</code>
+       */
+      public java.lang.String getRuleKey() {
+        java.lang.Object ref = ruleKey_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            ruleKey_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string rule_key = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getRuleKeyBytes() {
+        java.lang.Object ref = ruleKey_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          ruleKey_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string rule_key = 2;</code>
+       */
+      public Builder setRuleKey(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        ruleKey_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string rule_key = 2;</code>
+       */
+      public Builder clearRuleKey() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        ruleKey_ = getDefaultInstance().getRuleKey();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string rule_key = 2;</code>
+       */
+      public Builder setRuleKeyBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        ruleKey_ = value;
+        onChanged();
+        return this;
+      }
+
+      private int line_ ;
+      /**
+       * <code>optional int32 line = 3;</code>
+       */
+      public boolean hasLine() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional int32 line = 3;</code>
+       */
+      public int getLine() {
+        return line_;
+      }
+      /**
+       * <code>optional int32 line = 3;</code>
+       */
+      public Builder setLine(int value) {
+        bitField0_ |= 0x00000004;
+        line_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int32 line = 3;</code>
+       */
+      public Builder clearLine() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        line_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object msg_ = "";
+      /**
+       * <code>optional string msg = 4;</code>
+       */
+      public boolean hasMsg() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional string msg = 4;</code>
+       */
+      public java.lang.String getMsg() {
+        java.lang.Object ref = msg_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            msg_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string msg = 4;</code>
+       */
+      public com.google.protobuf.ByteString
+          getMsgBytes() {
+        java.lang.Object ref = msg_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          msg_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string msg = 4;</code>
+       */
+      public Builder setMsg(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        msg_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string msg = 4;</code>
+       */
+      public Builder clearMsg() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        msg_ = getDefaultInstance().getMsg();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string msg = 4;</code>
+       */
+      public Builder setMsgBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        msg_ = value;
+        onChanged();
+        return this;
+      }
+
+      private org.sonar.batch.protocol.Constants.Severity severity_ = org.sonar.batch.protocol.Constants.Severity.INFO;
+      /**
+       * <code>optional .Severity severity = 5;</code>
+       */
+      public boolean hasSeverity() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .Severity severity = 5;</code>
+       */
+      public org.sonar.batch.protocol.Constants.Severity getSeverity() {
+        return severity_;
+      }
+      /**
+       * <code>optional .Severity severity = 5;</code>
+       */
+      public Builder setSeverity(org.sonar.batch.protocol.Constants.Severity value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000010;
+        severity_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .Severity severity = 5;</code>
+       */
+      public Builder clearSeverity() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        severity_ = org.sonar.batch.protocol.Constants.Severity.INFO;
+        onChanged();
+        return this;
+      }
+
+      private com.google.protobuf.LazyStringList tags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      private void ensureTagsIsMutable() {
+        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
+          tags_ = new com.google.protobuf.LazyStringArrayList(tags_);
+          bitField0_ |= 0x00000020;
+         }
+      }
+      /**
+       * <code>repeated string tags = 6;</code>
+       */
+      public com.google.protobuf.ProtocolStringList
+          getTagsList() {
+        return tags_.getUnmodifiableView();
+      }
+      /**
+       * <code>repeated string tags = 6;</code>
+       */
+      public int getTagsCount() {
+        return tags_.size();
+      }
+      /**
+       * <code>repeated string tags = 6;</code>
+       */
+      public java.lang.String getTags(int index) {
+        return tags_.get(index);
+      }
+      /**
+       * <code>repeated string tags = 6;</code>
+       */
+      public com.google.protobuf.ByteString
+          getTagsBytes(int index) {
+        return tags_.getByteString(index);
+      }
+      /**
+       * <code>repeated string tags = 6;</code>
+       */
+      public Builder setTags(
+          int index, java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureTagsIsMutable();
+        tags_.set(index, value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string tags = 6;</code>
+       */
+      public Builder addTags(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureTagsIsMutable();
+        tags_.add(value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string tags = 6;</code>
+       */
+      public Builder addAllTags(
+          java.lang.Iterable<java.lang.String> values) {
+        ensureTagsIsMutable();
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, tags_);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string tags = 6;</code>
+       */
+      public Builder clearTags() {
+        tags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string tags = 6;</code>
+       */
+      public Builder addTagsBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureTagsIsMutable();
+        tags_.add(value);
+        onChanged();
+        return this;
+      }
+
+      private double effortToFix_ ;
+      /**
+       * <code>optional double effort_to_fix = 7;</code>
+       *
+       * <pre>
+       * temporary fields during development of computation stack
+       * </pre>
+       */
+      public boolean hasEffortToFix() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional double effort_to_fix = 7;</code>
+       *
+       * <pre>
+       * temporary fields during development of computation stack
+       * </pre>
+       */
+      public double getEffortToFix() {
+        return effortToFix_;
+      }
+      /**
+       * <code>optional double effort_to_fix = 7;</code>
+       *
+       * <pre>
+       * temporary fields during development of computation stack
+       * </pre>
+       */
+      public Builder setEffortToFix(double value) {
+        bitField0_ |= 0x00000040;
+        effortToFix_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double effort_to_fix = 7;</code>
+       *
+       * <pre>
+       * temporary fields during development of computation stack
+       * </pre>
+       */
+      public Builder clearEffortToFix() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        effortToFix_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      private boolean isNew_ ;
+      /**
+       * <code>optional bool is_new = 8;</code>
+       */
+      public boolean hasIsNew() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional bool is_new = 8;</code>
+       */
+      public boolean getIsNew() {
+        return isNew_;
+      }
+      /**
+       * <code>optional bool is_new = 8;</code>
+       */
+      public Builder setIsNew(boolean value) {
+        bitField0_ |= 0x00000080;
+        isNew_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool is_new = 8;</code>
+       */
+      public Builder clearIsNew() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        isNew_ = false;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object uuid_ = "";
+      /**
+       * <code>optional string uuid = 9;</code>
+       */
+      public boolean hasUuid() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional string uuid = 9;</code>
+       */
+      public java.lang.String getUuid() {
+        java.lang.Object ref = uuid_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            uuid_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string uuid = 9;</code>
+       */
+      public com.google.protobuf.ByteString
+          getUuidBytes() {
+        java.lang.Object ref = uuid_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          uuid_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string uuid = 9;</code>
+       */
+      public Builder setUuid(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000100;
+        uuid_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string uuid = 9;</code>
+       */
+      public Builder clearUuid() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        uuid_ = getDefaultInstance().getUuid();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string uuid = 9;</code>
+       */
+      public Builder setUuidBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000100;
+        uuid_ = value;
+        onChanged();
+        return this;
+      }
+
+      private long debtInMinutes_ ;
+      /**
+       * <code>optional int64 debt_in_minutes = 10;</code>
+       */
+      public boolean hasDebtInMinutes() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional int64 debt_in_minutes = 10;</code>
+       */
+      public long getDebtInMinutes() {
+        return debtInMinutes_;
+      }
+      /**
+       * <code>optional int64 debt_in_minutes = 10;</code>
+       */
+      public Builder setDebtInMinutes(long value) {
+        bitField0_ |= 0x00000200;
+        debtInMinutes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 debt_in_minutes = 10;</code>
+       */
+      public Builder clearDebtInMinutes() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        debtInMinutes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object resolution_ = "";
+      /**
+       * <code>optional string resolution = 11;</code>
+       */
+      public boolean hasResolution() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional string resolution = 11;</code>
+       */
+      public java.lang.String getResolution() {
+        java.lang.Object ref = resolution_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            resolution_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string resolution = 11;</code>
+       */
+      public com.google.protobuf.ByteString
+          getResolutionBytes() {
+        java.lang.Object ref = resolution_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          resolution_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string resolution = 11;</code>
+       */
+      public Builder setResolution(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000400;
+        resolution_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string resolution = 11;</code>
+       */
+      public Builder clearResolution() {
+        bitField0_ = (bitField0_ & ~0x00000400);
+        resolution_ = getDefaultInstance().getResolution();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string resolution = 11;</code>
+       */
+      public Builder setResolutionBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000400;
+        resolution_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object status_ = "";
+      /**
+       * <code>optional string status = 12;</code>
+       */
+      public boolean hasStatus() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional string status = 12;</code>
+       */
+      public java.lang.String getStatus() {
+        java.lang.Object ref = status_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            status_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string status = 12;</code>
+       */
+      public com.google.protobuf.ByteString
+          getStatusBytes() {
+        java.lang.Object ref = status_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          status_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string status = 12;</code>
+       */
+      public Builder setStatus(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000800;
+        status_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string status = 12;</code>
+       */
+      public Builder clearStatus() {
+        bitField0_ = (bitField0_ & ~0x00000800);
+        status_ = getDefaultInstance().getStatus();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string status = 12;</code>
+       */
+      public Builder setStatusBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000800;
+        status_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object checksum_ = "";
+      /**
+       * <code>optional string checksum = 13;</code>
+       */
+      public boolean hasChecksum() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional string checksum = 13;</code>
+       */
+      public java.lang.String getChecksum() {
+        java.lang.Object ref = checksum_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            checksum_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string checksum = 13;</code>
+       */
+      public com.google.protobuf.ByteString
+          getChecksumBytes() {
+        java.lang.Object ref = checksum_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          checksum_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string checksum = 13;</code>
+       */
+      public Builder setChecksum(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00001000;
+        checksum_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string checksum = 13;</code>
+       */
+      public Builder clearChecksum() {
+        bitField0_ = (bitField0_ & ~0x00001000);
+        checksum_ = getDefaultInstance().getChecksum();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string checksum = 13;</code>
+       */
+      public Builder setChecksumBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00001000;
+        checksum_ = value;
+        onChanged();
+        return this;
+      }
+
+      private boolean manualSeverity_ ;
+      /**
+       * <code>optional bool manual_severity = 14;</code>
+       */
+      public boolean hasManualSeverity() {
+        return ((bitField0_ & 0x00002000) == 0x00002000);
+      }
+      /**
+       * <code>optional bool manual_severity = 14;</code>
+       */
+      public boolean getManualSeverity() {
+        return manualSeverity_;
+      }
+      /**
+       * <code>optional bool manual_severity = 14;</code>
+       */
+      public Builder setManualSeverity(boolean value) {
+        bitField0_ |= 0x00002000;
+        manualSeverity_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool manual_severity = 14;</code>
+       */
+      public Builder clearManualSeverity() {
+        bitField0_ = (bitField0_ & ~0x00002000);
+        manualSeverity_ = false;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object reporter_ = "";
+      /**
+       * <code>optional string reporter = 15;</code>
+       */
+      public boolean hasReporter() {
+        return ((bitField0_ & 0x00004000) == 0x00004000);
+      }
+      /**
+       * <code>optional string reporter = 15;</code>
+       */
+      public java.lang.String getReporter() {
+        java.lang.Object ref = reporter_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            reporter_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string reporter = 15;</code>
+       */
+      public com.google.protobuf.ByteString
+          getReporterBytes() {
+        java.lang.Object ref = reporter_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          reporter_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string reporter = 15;</code>
+       */
+      public Builder setReporter(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00004000;
+        reporter_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string reporter = 15;</code>
+       */
+      public Builder clearReporter() {
+        bitField0_ = (bitField0_ & ~0x00004000);
+        reporter_ = getDefaultInstance().getReporter();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string reporter = 15;</code>
+       */
+      public Builder setReporterBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00004000;
+        reporter_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object assignee_ = "";
+      /**
+       * <code>optional string assignee = 16;</code>
+       */
+      public boolean hasAssignee() {
+        return ((bitField0_ & 0x00008000) == 0x00008000);
+      }
+      /**
+       * <code>optional string assignee = 16;</code>
+       */
+      public java.lang.String getAssignee() {
+        java.lang.Object ref = assignee_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            assignee_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string assignee = 16;</code>
+       */
+      public com.google.protobuf.ByteString
+          getAssigneeBytes() {
+        java.lang.Object ref = assignee_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          assignee_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string assignee = 16;</code>
+       */
+      public Builder setAssignee(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00008000;
+        assignee_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string assignee = 16;</code>
+       */
+      public Builder clearAssignee() {
+        bitField0_ = (bitField0_ & ~0x00008000);
+        assignee_ = getDefaultInstance().getAssignee();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string assignee = 16;</code>
+       */
+      public Builder setAssigneeBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00008000;
+        assignee_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object actionPlanKey_ = "";
+      /**
+       * <code>optional string action_plan_key = 17;</code>
+       */
+      public boolean hasActionPlanKey() {
+        return ((bitField0_ & 0x00010000) == 0x00010000);
+      }
+      /**
+       * <code>optional string action_plan_key = 17;</code>
+       */
+      public java.lang.String getActionPlanKey() {
+        java.lang.Object ref = actionPlanKey_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            actionPlanKey_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string action_plan_key = 17;</code>
+       */
+      public com.google.protobuf.ByteString
+          getActionPlanKeyBytes() {
+        java.lang.Object ref = actionPlanKey_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          actionPlanKey_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string action_plan_key = 17;</code>
+       */
+      public Builder setActionPlanKey(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00010000;
+        actionPlanKey_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string action_plan_key = 17;</code>
+       */
+      public Builder clearActionPlanKey() {
+        bitField0_ = (bitField0_ & ~0x00010000);
+        actionPlanKey_ = getDefaultInstance().getActionPlanKey();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string action_plan_key = 17;</code>
+       */
+      public Builder setActionPlanKeyBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00010000;
+        actionPlanKey_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object attributes_ = "";
+      /**
+       * <code>optional string attributes = 18;</code>
+       */
+      public boolean hasAttributes() {
+        return ((bitField0_ & 0x00020000) == 0x00020000);
+      }
+      /**
+       * <code>optional string attributes = 18;</code>
+       */
+      public java.lang.String getAttributes() {
+        java.lang.Object ref = attributes_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            attributes_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string attributes = 18;</code>
+       */
+      public com.google.protobuf.ByteString
+          getAttributesBytes() {
+        java.lang.Object ref = attributes_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          attributes_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string attributes = 18;</code>
+       */
+      public Builder setAttributes(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00020000;
+        attributes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string attributes = 18;</code>
+       */
+      public Builder clearAttributes() {
+        bitField0_ = (bitField0_ & ~0x00020000);
+        attributes_ = getDefaultInstance().getAttributes();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string attributes = 18;</code>
+       */
+      public Builder setAttributesBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00020000;
+        attributes_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object authorLogin_ = "";
+      /**
+       * <code>optional string author_login = 19;</code>
+       */
+      public boolean hasAuthorLogin() {
+        return ((bitField0_ & 0x00040000) == 0x00040000);
+      }
+      /**
+       * <code>optional string author_login = 19;</code>
+       */
+      public java.lang.String getAuthorLogin() {
+        java.lang.Object ref = authorLogin_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            authorLogin_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string author_login = 19;</code>
+       */
+      public com.google.protobuf.ByteString
+          getAuthorLoginBytes() {
+        java.lang.Object ref = authorLogin_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          authorLogin_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string author_login = 19;</code>
+       */
+      public Builder setAuthorLogin(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00040000;
+        authorLogin_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string author_login = 19;</code>
+       */
+      public Builder clearAuthorLogin() {
+        bitField0_ = (bitField0_ & ~0x00040000);
+        authorLogin_ = getDefaultInstance().getAuthorLogin();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string author_login = 19;</code>
+       */
+      public Builder setAuthorLoginBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00040000;
+        authorLogin_ = value;
+        onChanged();
+        return this;
+      }
+
+      private long creationDate_ ;
+      /**
+       * <code>optional int64 creation_date = 20;</code>
+       */
+      public boolean hasCreationDate() {
+        return ((bitField0_ & 0x00080000) == 0x00080000);
+      }
+      /**
+       * <code>optional int64 creation_date = 20;</code>
+       */
+      public long getCreationDate() {
+        return creationDate_;
+      }
+      /**
+       * <code>optional int64 creation_date = 20;</code>
+       */
+      public Builder setCreationDate(long value) {
+        bitField0_ |= 0x00080000;
+        creationDate_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 creation_date = 20;</code>
+       */
+      public Builder clearCreationDate() {
+        bitField0_ = (bitField0_ & ~0x00080000);
+        creationDate_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private long closeDate_ ;
+      /**
+       * <code>optional int64 close_date = 21;</code>
+       */
+      public boolean hasCloseDate() {
+        return ((bitField0_ & 0x00100000) == 0x00100000);
+      }
+      /**
+       * <code>optional int64 close_date = 21;</code>
+       */
+      public long getCloseDate() {
+        return closeDate_;
+      }
+      /**
+       * <code>optional int64 close_date = 21;</code>
+       */
+      public Builder setCloseDate(long value) {
+        bitField0_ |= 0x00100000;
+        closeDate_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 close_date = 21;</code>
+       */
+      public Builder clearCloseDate() {
+        bitField0_ = (bitField0_ & ~0x00100000);
+        closeDate_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private long updateDate_ ;
+      /**
+       * <code>optional int64 update_date = 22;</code>
+       */
+      public boolean hasUpdateDate() {
+        return ((bitField0_ & 0x00200000) == 0x00200000);
+      }
+      /**
+       * <code>optional int64 update_date = 22;</code>
+       */
+      public long getUpdateDate() {
+        return updateDate_;
+      }
+      /**
+       * <code>optional int64 update_date = 22;</code>
+       */
+      public Builder setUpdateDate(long value) {
+        bitField0_ |= 0x00200000;
+        updateDate_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 update_date = 22;</code>
+       */
+      public Builder clearUpdateDate() {
+        bitField0_ = (bitField0_ & ~0x00200000);
+        updateDate_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private long selectedAt_ ;
+      /**
+       * <code>optional int64 selected_at = 23;</code>
+       */
+      public boolean hasSelectedAt() {
+        return ((bitField0_ & 0x00400000) == 0x00400000);
+      }
+      /**
+       * <code>optional int64 selected_at = 23;</code>
+       */
+      public long getSelectedAt() {
+        return selectedAt_;
+      }
+      /**
+       * <code>optional int64 selected_at = 23;</code>
+       */
+      public Builder setSelectedAt(long value) {
+        bitField0_ |= 0x00400000;
+        selectedAt_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 selected_at = 23;</code>
+       */
+      public Builder clearSelectedAt() {
+        bitField0_ = (bitField0_ & ~0x00400000);
+        selectedAt_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object diffFields_ = "";
+      /**
+       * <code>optional string diff_fields = 24;</code>
+       */
+      public boolean hasDiffFields() {
+        return ((bitField0_ & 0x00800000) == 0x00800000);
+      }
+      /**
+       * <code>optional string diff_fields = 24;</code>
+       */
+      public java.lang.String getDiffFields() {
+        java.lang.Object ref = diffFields_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            diffFields_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string diff_fields = 24;</code>
+       */
+      public com.google.protobuf.ByteString
+          getDiffFieldsBytes() {
+        java.lang.Object ref = diffFields_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          diffFields_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string diff_fields = 24;</code>
+       */
+      public Builder setDiffFields(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00800000;
+        diffFields_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string diff_fields = 24;</code>
+       */
+      public Builder clearDiffFields() {
+        bitField0_ = (bitField0_ & ~0x00800000);
+        diffFields_ = getDefaultInstance().getDiffFields();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string diff_fields = 24;</code>
+       */
+      public Builder setDiffFieldsBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00800000;
+        diffFields_ = value;
+        onChanged();
+        return this;
+      }
+
+      private boolean isChanged_ ;
+      /**
+       * <code>optional bool is_changed = 25;</code>
+       */
+      public boolean hasIsChanged() {
+        return ((bitField0_ & 0x01000000) == 0x01000000);
+      }
+      /**
+       * <code>optional bool is_changed = 25;</code>
+       */
+      public boolean getIsChanged() {
+        return isChanged_;
+      }
+      /**
+       * <code>optional bool is_changed = 25;</code>
+       */
+      public Builder setIsChanged(boolean value) {
+        bitField0_ |= 0x01000000;
+        isChanged_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool is_changed = 25;</code>
+       */
+      public Builder clearIsChanged() {
+        bitField0_ = (bitField0_ & ~0x01000000);
+        isChanged_ = false;
+        onChanged();
+        return this;
+      }
+
+      private boolean mustSendNotification_ ;
+      /**
+       * <code>optional bool must_send_notification = 26;</code>
+       */
+      public boolean hasMustSendNotification() {
+        return ((bitField0_ & 0x02000000) == 0x02000000);
+      }
+      /**
+       * <code>optional bool must_send_notification = 26;</code>
+       */
+      public boolean getMustSendNotification() {
+        return mustSendNotification_;
+      }
+      /**
+       * <code>optional bool must_send_notification = 26;</code>
+       */
+      public Builder setMustSendNotification(boolean value) {
+        bitField0_ |= 0x02000000;
+        mustSendNotification_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool must_send_notification = 26;</code>
+       */
+      public Builder clearMustSendNotification() {
+        bitField0_ = (bitField0_ & ~0x02000000);
+        mustSendNotification_ = false;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:Issue)
+    }
+
+    static {
+      defaultInstance = new Issue(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:Issue)
+  }
+
+  public interface IssuesOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:Issues)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>optional int32 component_ref = 1;</code>
+     */
+    boolean hasComponentRef();
+    /**
+     * <code>optional int32 component_ref = 1;</code>
+     */
+    int getComponentRef();
+
+    /**
+     * <code>repeated .Issue list = 2;</code>
+     */
+    java.util.List<org.sonar.batch.protocol.output.BatchReport.Issue> 
+        getListList();
+    /**
+     * <code>repeated .Issue list = 2;</code>
+     */
+    org.sonar.batch.protocol.output.BatchReport.Issue getList(int index);
+    /**
+     * <code>repeated .Issue list = 2;</code>
+     */
+    int getListCount();
+    /**
+     * <code>repeated .Issue list = 2;</code>
+     */
+    java.util.List<? extends org.sonar.batch.protocol.output.BatchReport.IssueOrBuilder> 
+        getListOrBuilderList();
+    /**
+     * <code>repeated .Issue list = 2;</code>
+     */
+    org.sonar.batch.protocol.output.BatchReport.IssueOrBuilder getListOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code Issues}
+   */
+  public static final class Issues extends
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:Issues)
+      IssuesOrBuilder {
+    // Use Issues.newBuilder() to construct.
+    private Issues(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Issues(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Issues defaultInstance;
+    public static Issues getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Issues getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Issues(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              bitField0_ |= 0x00000001;
+              componentRef_ = input.readInt32();
+              break;
+            }
+            case 18: {
+              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                list_ = new java.util.ArrayList<org.sonar.batch.protocol.output.BatchReport.Issue>();
+                mutable_bitField0_ |= 0x00000002;
+              }
+              list_.add(input.readMessage(org.sonar.batch.protocol.output.BatchReport.Issue.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+          list_ = java.util.Collections.unmodifiableList(list_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.sonar.batch.protocol.output.BatchReport.internal_static_Issues_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.sonar.batch.protocol.output.BatchReport.internal_static_Issues_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.sonar.batch.protocol.output.BatchReport.Issues.class, org.sonar.batch.protocol.output.BatchReport.Issues.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Issues> PARSER =
+        new com.google.protobuf.AbstractParser<Issues>() {
+      public Issues parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Issues(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Issues> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    public static final int COMPONENT_REF_FIELD_NUMBER = 1;
+    private int componentRef_;
+    /**
+     * <code>optional int32 component_ref = 1;</code>
+     */
+    public boolean hasComponentRef() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional int32 component_ref = 1;</code>
+     */
+    public int getComponentRef() {
+      return componentRef_;
+    }
+
+    public static final int LIST_FIELD_NUMBER = 2;
+    private java.util.List<org.sonar.batch.protocol.output.BatchReport.Issue> list_;
+    /**
+     * <code>repeated .Issue list = 2;</code>
+     */
+    public java.util.List<org.sonar.batch.protocol.output.BatchReport.Issue> getListList() {
+      return list_;
+    }
+    /**
+     * <code>repeated .Issue list = 2;</code>
+     */
+    public java.util.List<? extends org.sonar.batch.protocol.output.BatchReport.IssueOrBuilder> 
+        getListOrBuilderList() {
+      return list_;
+    }
+    /**
+     * <code>repeated .Issue list = 2;</code>
+     */
+    public int getListCount() {
+      return list_.size();
+    }
+    /**
+     * <code>repeated .Issue list = 2;</code>
+     */
+    public org.sonar.batch.protocol.output.BatchReport.Issue getList(int index) {
+      return list_.get(index);
+    }
+    /**
+     * <code>repeated .Issue list = 2;</code>
+     */
+    public org.sonar.batch.protocol.output.BatchReport.IssueOrBuilder getListOrBuilder(
+        int index) {
+      return list_.get(index);
+    }
+
+    private void initFields() {
+      componentRef_ = 0;
+      list_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeInt32(1, componentRef_);
+      }
+      for (int i = 0; i < list_.size(); i++) {
+        output.writeMessage(2, list_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(1, componentRef_);
+      }
+      for (int i = 0; i < list_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, list_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.sonar.batch.protocol.output.BatchReport.Issues parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Issues parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Issues parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Issues parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Issues parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Issues parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Issues parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Issues parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Issues parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonar.batch.protocol.output.BatchReport.Issues parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.sonar.batch.protocol.output.BatchReport.Issues prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code Issues}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:Issues)
+        org.sonar.batch.protocol.output.BatchReport.IssuesOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.sonar.batch.protocol.output.BatchReport.internal_static_Issues_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.sonar.batch.protocol.output.BatchReport.internal_static_Issues_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.sonar.batch.protocol.output.BatchReport.Issues.class, org.sonar.batch.protocol.output.BatchReport.Issues.Builder.class);
+      }
+
+      // Construct using org.sonar.batch.protocol.output.BatchReport.Issues.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getListFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        componentRef_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (listBuilder_ == null) {
+          list_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+        } else {
+          listBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.sonar.batch.protocol.output.BatchReport.internal_static_Issues_descriptor;
+      }
+
+      public org.sonar.batch.protocol.output.BatchReport.Issues getDefaultInstanceForType() {
+        return org.sonar.batch.protocol.output.BatchReport.Issues.getDefaultInstance();
+      }
+
+      public org.sonar.batch.protocol.output.BatchReport.Issues build() {
+        org.sonar.batch.protocol.output.BatchReport.Issues result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.sonar.batch.protocol.output.BatchReport.Issues buildPartial() {
+        org.sonar.batch.protocol.output.BatchReport.Issues result = new org.sonar.batch.protocol.output.BatchReport.Issues(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.componentRef_ = componentRef_;
+        if (listBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            list_ = java.util.Collections.unmodifiableList(list_);
+            bitField0_ = (bitField0_ & ~0x00000002);
+          }
+          result.list_ = list_;
+        } else {
+          result.list_ = listBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.sonar.batch.protocol.output.BatchReport.Issues) {
+          return mergeFrom((org.sonar.batch.protocol.output.BatchReport.Issues)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.sonar.batch.protocol.output.BatchReport.Issues other) {
+        if (other == org.sonar.batch.protocol.output.BatchReport.Issues.getDefaultInstance()) return this;
+        if (other.hasComponentRef()) {
+          setComponentRef(other.getComponentRef());
+        }
+        if (listBuilder_ == null) {
+          if (!other.list_.isEmpty()) {
+            if (list_.isEmpty()) {
+              list_ = other.list_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+            } else {
+              ensureListIsMutable();
+              list_.addAll(other.list_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.list_.isEmpty()) {
+            if (listBuilder_.isEmpty()) {
+              listBuilder_.dispose();
+              listBuilder_ = null;
+              list_ = other.list_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              listBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getListFieldBuilder() : null;
+            } else {
+              listBuilder_.addAllMessages(other.list_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.sonar.batch.protocol.output.BatchReport.Issues parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.sonar.batch.protocol.output.BatchReport.Issues) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private int componentRef_ ;
+      /**
+       * <code>optional int32 component_ref = 1;</code>
+       */
+      public boolean hasComponentRef() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional int32 component_ref = 1;</code>
+       */
+      public int getComponentRef() {
+        return componentRef_;
+      }
+      /**
+       * <code>optional int32 component_ref = 1;</code>
+       */
+      public Builder setComponentRef(int value) {
+        bitField0_ |= 0x00000001;
+        componentRef_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int32 component_ref = 1;</code>
+       */
+      public Builder clearComponentRef() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        componentRef_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private java.util.List<org.sonar.batch.protocol.output.BatchReport.Issue> list_ =
+        java.util.Collections.emptyList();
+      private void ensureListIsMutable() {
+        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+          list_ = new java.util.ArrayList<org.sonar.batch.protocol.output.BatchReport.Issue>(list_);
+          bitField0_ |= 0x00000002;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.sonar.batch.protocol.output.BatchReport.Issue, org.sonar.batch.protocol.output.BatchReport.Issue.Builder, org.sonar.batch.protocol.output.BatchReport.IssueOrBuilder> listBuilder_;
+
+      /**
+       * <code>repeated .Issue list = 2;</code>
+       */
+      public java.util.List<org.sonar.batch.protocol.output.BatchReport.Issue> getListList() {
+        if (listBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(list_);
+        } else {
+          return listBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .Issue list = 2;</code>
+       */
+      public int getListCount() {
+        if (listBuilder_ == null) {
+          return list_.size();
+        } else {
+          return listBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .Issue list = 2;</code>
+       */
+      public org.sonar.batch.protocol.output.BatchReport.Issue getList(int index) {
+        if (listBuilder_ == null) {
+          return list_.get(index);
+        } else {
+          return listBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .Issue list = 2;</code>
+       */
+      public Builder setList(
+          int index, org.sonar.batch.protocol.output.BatchReport.Issue value) {
+        if (listBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureListIsMutable();
+          list_.set(index, value);
+          onChanged();
+        } else {
+          listBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .Issue list = 2;</code>
+       */
+      public Builder setList(
+          int index, org.sonar.batch.protocol.output.BatchReport.Issue.Builder builderForValue) {
+        if (listBuilder_ == null) {
+          ensureListIsMutable();
+          list_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          listBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .Issue list = 2;</code>
+       */
+      public Builder addList(org.sonar.batch.protocol.output.BatchReport.Issue value) {
+        if (listBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureListIsMutable();
+          list_.add(value);
+          onChanged();
+        } else {
+          listBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .Issue list = 2;</code>
+       */
+      public Builder addList(
+          int index, org.sonar.batch.protocol.output.BatchReport.Issue value) {
+        if (listBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureListIsMutable();
+          list_.add(index, value);
+          onChanged();
+        } else {
+          listBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .Issue list = 2;</code>
+       */
+      public Builder addList(
+          org.sonar.batch.protocol.output.BatchReport.Issue.Builder builderForValue) {
+        if (listBuilder_ == null) {
+          ensureListIsMutable();
+          list_.add(builderForValue.build());
+          onChanged();
+        } else {
+          listBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .Issue list = 2;</code>
+       */
+      public Builder addList(
+          int index, org.sonar.batch.protocol.output.BatchReport.Issue.Builder builderForValue) {
+        if (listBuilder_ == null) {
+          ensureListIsMutable();
+          list_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          listBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .Issue list = 2;</code>
+       */
+      public Builder addAllList(
+          java.lang.Iterable<? extends org.sonar.batch.protocol.output.BatchReport.Issue> values) {
+        if (listBuilder_ == null) {
+          ensureListIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, list_);
+          onChanged();
+        } else {
+          listBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .Issue list = 2;</code>
+       */
+      public Builder clearList() {
+        if (listBuilder_ == null) {
+          list_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+          onChanged();
+        } else {
+          listBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .Issue list = 2;</code>
+       */
+      public Builder removeList(int index) {
+        if (listBuilder_ == null) {
+          ensureListIsMutable();
+          list_.remove(index);
+          onChanged();
+        } else {
+          listBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .Issue list = 2;</code>
+       */
+      public org.sonar.batch.protocol.output.BatchReport.Issue.Builder getListBuilder(
+          int index) {
+        return getListFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .Issue list = 2;</code>
+       */
+      public org.sonar.batch.protocol.output.BatchReport.IssueOrBuilder getListOrBuilder(
+          int index) {
+        if (listBuilder_ == null) {
+          return list_.get(index);  } else {
+          return listBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .Issue list = 2;</code>
+       */
+      public java.util.List<? extends org.sonar.batch.protocol.output.BatchReport.IssueOrBuilder> 
+           getListOrBuilderList() {
+        if (listBuilder_ != null) {
+          return listBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(list_);
+        }
+      }
+      /**
+       * <code>repeated .Issue list = 2;</code>
+       */
+      public org.sonar.batch.protocol.output.BatchReport.Issue.Builder addListBuilder() {
+        return getListFieldBuilder().addBuilder(
+            org.sonar.batch.protocol.output.BatchReport.Issue.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .Issue list = 2;</code>
+       */
+      public org.sonar.batch.protocol.output.BatchReport.Issue.Builder addListBuilder(
+          int index) {
+        return getListFieldBuilder().addBuilder(
+            index, org.sonar.batch.protocol.output.BatchReport.Issue.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .Issue list = 2;</code>
+       */
+      public java.util.List<org.sonar.batch.protocol.output.BatchReport.Issue.Builder> 
+           getListBuilderList() {
+        return getListFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.sonar.batch.protocol.output.BatchReport.Issue, org.sonar.batch.protocol.output.BatchReport.Issue.Builder, org.sonar.batch.protocol.output.BatchReport.IssueOrBuilder> 
+          getListFieldBuilder() {
+        if (listBuilder_ == null) {
+          listBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.sonar.batch.protocol.output.BatchReport.Issue, org.sonar.batch.protocol.output.BatchReport.Issue.Builder, org.sonar.batch.protocol.output.BatchReport.IssueOrBuilder>(
+                  list_,
+                  ((bitField0_ & 0x00000002) == 0x00000002),
+                  getParentForChildren(),
+                  isClean());
+          list_ = null;
+        }
+        return listBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:Issues)
+    }
+
+    static {
+      defaultInstance = new Issues(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:Issues)
+  }
+
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_Metadata_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_Metadata_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_Component_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_Component_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_Issue_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_Issue_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_Issues_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_Issues_fieldAccessorTable;
+
+  public static com.google.protobuf.Descriptors.FileDescriptor
+      getDescriptor() {
+    return descriptor;
+  }
+  private static com.google.protobuf.Descriptors.FileDescriptor
+      descriptor;
+  static {
+    java.lang.String[] descriptorData = {
+      "\n\022batch_report.proto\032\017constants.proto\"R\n" +
+      "\010Metadata\022\025\n\ranalysis_date\030\001 \001(\003\022\023\n\013proj" +
+      "ect_key\030\002 \001(\t\022\032\n\022root_component_ref\030\003 \001(" +
+      "\005\"\254\001\n\tComponent\022\013\n\003ref\030\001 \001(\005\022\014\n\004path\030\002 \001" +
+      "(\t\022\014\n\004name\030\003 \001(\t\022\034\n\004type\030\004 \001(\0162\016.Compone" +
+      "ntType\022\017\n\007is_test\030\005 \001(\010\022\020\n\010language\030\006 \001(" +
+      "\t\022\022\n\nchild_refs\030\007 \003(\005\022\023\n\013snapshot_id\030\010 \001" +
+      "(\005\022\014\n\004uuid\030\t \001(\t\"\232\004\n\005Issue\022\027\n\017rule_repos" +
+      "itory\030\001 \001(\t\022\020\n\010rule_key\030\002 \001(\t\022\014\n\004line\030\003 " +
+      "\001(\005\022\013\n\003msg\030\004 \001(\t\022\033\n\010severity\030\005 \001(\0162\t.Sev",
+      "erity\022\014\n\004tags\030\006 \003(\t\022\025\n\reffort_to_fix\030\007 \001" +
+      "(\001\022\016\n\006is_new\030\010 \001(\010\022\014\n\004uuid\030\t \001(\t\022\027\n\017debt" +
+      "_in_minutes\030\n \001(\003\022\022\n\nresolution\030\013 \001(\t\022\016\n" +
+      "\006status\030\014 \001(\t\022\020\n\010checksum\030\r \001(\t\022\027\n\017manua" +
+      "l_severity\030\016 \001(\010\022\020\n\010reporter\030\017 \001(\t\022\020\n\010as" +
+      "signee\030\020 \001(\t\022\027\n\017action_plan_key\030\021 \001(\t\022\022\n" +
+      "\nattributes\030\022 \001(\t\022\024\n\014author_login\030\023 \001(\t\022" +
+      "\025\n\rcreation_date\030\024 \001(\003\022\022\n\nclose_date\030\025 \001" +
+      "(\003\022\023\n\013update_date\030\026 \001(\003\022\023\n\013selected_at\030\027" +
+      " \001(\003\022\023\n\013diff_fields\030\030 \001(\t\022\022\n\nis_changed\030",
+      "\031 \001(\010\022\036\n\026must_send_notification\030\032 \001(\010\"5\n" +
+      "\006Issues\022\025\n\rcomponent_ref\030\001 \001(\005\022\024\n\004list\030\002" +
+      " \003(\0132\006.IssueB#\n\037org.sonar.batch.protocol" +
+      ".outputH\001"
+    };
+    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
+        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
+          public com.google.protobuf.ExtensionRegistry assignDescriptors(
+              com.google.protobuf.Descriptors.FileDescriptor root) {
+            descriptor = root;
+            return null;
+          }
+        };
+    com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+          org.sonar.batch.protocol.Constants.getDescriptor(),
+        }, assigner);
+    internal_static_Metadata_descriptor =
+      getDescriptor().getMessageTypes().get(0);
+    internal_static_Metadata_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_Metadata_descriptor,
+        new java.lang.String[] { "AnalysisDate", "ProjectKey", "RootComponentRef", });
+    internal_static_Component_descriptor =
+      getDescriptor().getMessageTypes().get(1);
+    internal_static_Component_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_Component_descriptor,
+        new java.lang.String[] { "Ref", "Path", "Name", "Type", "IsTest", "Language", "ChildRefs", "SnapshotId", "Uuid", });
+    internal_static_Issue_descriptor =
+      getDescriptor().getMessageTypes().get(2);
+    internal_static_Issue_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_Issue_descriptor,
+        new java.lang.String[] { "RuleRepository", "RuleKey", "Line", "Msg", "Severity", "Tags", "EffortToFix", "IsNew", "Uuid", "DebtInMinutes", "Resolution", "Status", "Checksum", "ManualSeverity", "Reporter", "Assignee", "ActionPlanKey", "Attributes", "AuthorLogin", "CreationDate", "CloseDate", "UpdateDate", "SelectedAt", "DiffFields", "IsChanged", "MustSendNotification", });
+    internal_static_Issues_descriptor =
+      getDescriptor().getMessageTypes().get(3);
+    internal_static_Issues_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_Issues_descriptor,
+        new java.lang.String[] { "ComponentRef", "List", });
+    org.sonar.batch.protocol.Constants.getDescriptor();
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}
index fe5799b19baef7774ce7e4fa41b25fd59badf48e..28c50041c8248cdeff2d7a73f89133a5d5ec30be 100644 (file)
@@ -33,28 +33,28 @@ public class BatchOutputReader {
     this.fileStructure = new FileStructure(dir);
   }
 
-  public BatchOutput.ReportMetadata readMetadata() {
+  public BatchReport.Metadata readMetadata() {
     File file = fileStructure.metadataFile();
     if (!file.exists() || !file.isFile()) {
       throw new IllegalStateException("Metadata file is missing in analysis report: " + file);
     }
-    return ProtobufUtil.readFile(file, BatchOutput.ReportMetadata.PARSER);
+    return ProtobufUtil.readFile(file, BatchReport.Metadata.PARSER);
   }
 
   @CheckForNull
-  public BatchOutput.ReportComponent readComponent(int componentRef) {
+  public BatchReport.Component readComponent(int componentRef) {
     File file = fileStructure.fileFor(FileStructure.Domain.COMPONENT, componentRef);
     if (file.exists() && file.isFile()) {
-      return ProtobufUtil.readFile(file, BatchOutput.ReportComponent.PARSER);
+      return ProtobufUtil.readFile(file, BatchReport.Component.PARSER);
     }
     return null;
   }
 
-  public Iterable<BatchOutput.ReportIssue> readComponentIssues(int componentRef) {
+  public Iterable<BatchReport.Issue> readComponentIssues(int componentRef) {
     File file = fileStructure.fileFor(FileStructure.Domain.ISSUES, componentRef);
     if (file.exists() && file.isFile()) {
       // all the issues are loaded in memory
-      BatchOutput.ReportIssues issues = ProtobufUtil.readFile(file, BatchOutput.ReportIssues.PARSER);
+      BatchReport.Issues issues = ProtobufUtil.readFile(file, BatchReport.Issues.PARSER);
       return issues.getListList();
     }
     return Collections.emptyList();
index 746ff6001099ac9cf8863ec2718518f28298d18b..2e12a297e1e247c769c9af395cc6eeb5ad769c06 100644 (file)
@@ -46,17 +46,17 @@ public class BatchOutputWriter {
   /**
    * Metadata is mandatory
    */
-  public void writeMetadata(BatchOutput.ReportMetadata metadata) {
+  public void writeMetadata(BatchReport.Metadata metadata) {
     ProtobufUtil.writeToFile(metadata, fileStructure.metadataFile());
   }
 
-  public void writeComponent(BatchOutput.ReportComponent component) {
+  public void writeComponent(BatchReport.Component component) {
     File file = fileStructure.fileFor(FileStructure.Domain.COMPONENT, component.getRef());
     ProtobufUtil.writeToFile(component, file);
   }
 
-  public void writeComponentIssues(int componentRef, Iterable<BatchOutput.ReportIssue> issues) {
-    BatchOutput.ReportIssues.Builder issuesBuilder = BatchOutput.ReportIssues.newBuilder();
+  public void writeComponentIssues(int componentRef, Iterable<BatchReport.Issue> issues) {
+    BatchReport.Issues.Builder issuesBuilder = BatchReport.Issues.newBuilder();
     issuesBuilder.setComponentRef(componentRef);
     issuesBuilder.addAllList(issues);
     File file = fileStructure.fileFor(FileStructure.Domain.ISSUES, componentRef);
diff --git a/sonar-batch-protocol/src/main/protobuf/batch_output.proto b/sonar-batch-protocol/src/main/protobuf/batch_output.proto
deleted file mode 100644 (file)
index 4b26c98..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
-    SonarQube, open source software quality management tool.
-    Copyright (C) 2008-2015 SonarSource
-    mailto:contact AT sonarsource DOT com
-
-    SonarQube is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 3 of the License, or (at your option) any later version.
-
-    SonarQube is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with this program; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
-*/
-
-/*
-Notes
-
-  - "required" fields are not used as recommended by Google to keep forward-compatibility:
-    https://developers.google.com/protocol-buffers/docs/proto#simple
-
-  - this is beta version of specification. It will evolve during next releases and is
-    not forward-compatible yet.
-
-  - the related Java files are not generated during build. Indeed the existing protoc maven
-    plugins require protobuf to be installed on boxes. That means that generated Java files
-    are updated and committed for each change (see src/main/gen-java).
-*/
-
-
-import "constants.proto";
-
-option java_package = "org.sonar.batch.protocol.output";
-option optimize_for = SPEED;
-
-message ReportMetadata {
-  optional int64 analysis_date = 1;
-  optional string project_key = 2;
-  optional int32 root_component_ref = 3;
-}
-
-message ReportComponent {
-  optional int32 ref = 1;
-  optional string path = 2;
-  optional string name = 3;
-  optional ComponentType type = 4;
-  optional bool is_test = 5;
-  optional string language = 6;
-  repeated int32 child_refs = 7;
-
-  // temporary fields during development of computation stack
-  optional int32 snapshot_id = 8;
-  optional string uuid = 9;
-}
-
-message ReportIssue {
-    optional string rule_repository = 1;
-    optional string rule_key = 2;
-    optional int32 line = 3;
-    optional string msg = 4;
-    optional Severity severity = 5;
-    repeated string tags = 6;
-
-    // temporary fields during development of computation stack
-    optional double effort_to_fix = 7;
-    optional bool is_new = 8;
-    optional string uuid = 9;
-    optional int64 debt_in_minutes = 10;
-    optional string resolution = 11;
-    optional string status = 12;
-    optional string checksum = 13;
-    optional bool manual_severity = 14;
-    optional string reporter = 15;
-    optional string assignee = 16;
-    optional string action_plan_key = 17;
-    optional string attributes = 18;
-    optional string author_login = 19;
-    optional int64 creation_date = 20;
-    optional int64 close_date = 21;
-    optional int64 update_date = 22;
-    optional int64 selected_at = 23;
-    optional string diff_fields = 24;
-    optional bool is_changed = 25;
-    optional bool must_send_notification = 26;
-}
-
-message ReportIssues {
-    optional int32 component_ref = 1;
-    repeated ReportIssue list = 2;
-}
diff --git a/sonar-batch-protocol/src/main/protobuf/batch_report.proto b/sonar-batch-protocol/src/main/protobuf/batch_report.proto
new file mode 100644 (file)
index 0000000..0499fc2
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+    SonarQube, open source software quality management tool.
+    Copyright (C) 2008-2015 SonarSource
+    mailto:contact AT sonarsource DOT com
+
+    SonarQube is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 3 of the License, or (at your option) any later version.
+
+    SonarQube is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public License
+    along with this program; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+*/
+
+/*
+Notes
+
+  - "required" fields are not used as recommended by Google to keep forward-compatibility:
+    https://developers.google.com/protocol-buffers/docs/proto#simple
+
+  - this is beta version of specification. It will evolve during next releases and is
+    not forward-compatible yet.
+
+  - the related Java files are not generated during build. Indeed the existing protoc maven
+    plugins require protobuf to be installed on boxes. That means that generated Java files
+    are updated and committed for each change (see src/main/gen-java).
+*/
+
+
+import "constants.proto";
+
+option java_package = "org.sonar.batch.protocol.output";
+option optimize_for = SPEED;
+
+message Metadata {
+  optional int64 analysis_date = 1;
+  optional string project_key = 2;
+  optional int32 root_component_ref = 3;
+}
+
+message Component {
+  optional int32 ref = 1;
+  optional string path = 2;
+  optional string name = 3;
+  optional ComponentType type = 4;
+  optional bool is_test = 5;
+  optional string language = 6;
+  repeated int32 child_refs = 7;
+
+  // temporary fields during development of computation stack
+  optional int32 snapshot_id = 8;
+  optional string uuid = 9;
+}
+
+message Issue {
+    optional string rule_repository = 1;
+    optional string rule_key = 2;
+    optional int32 line = 3;
+    optional string msg = 4;
+    optional Severity severity = 5;
+    repeated string tags = 6;
+
+    // temporary fields during development of computation stack
+    optional double effort_to_fix = 7;
+    optional bool is_new = 8;
+    optional string uuid = 9;
+    optional int64 debt_in_minutes = 10;
+    optional string resolution = 11;
+    optional string status = 12;
+    optional string checksum = 13;
+    optional bool manual_severity = 14;
+    optional string reporter = 15;
+    optional string assignee = 16;
+    optional string action_plan_key = 17;
+    optional string attributes = 18;
+    optional string author_login = 19;
+    optional int64 creation_date = 20;
+    optional int64 close_date = 21;
+    optional int64 update_date = 22;
+    optional int64 selected_at = 23;
+    optional string diff_fields = 24;
+    optional bool is_changed = 25;
+    optional bool must_send_notification = 26;
+}
+
+message Issues {
+    optional int32 component_ref = 1;
+    repeated Issue list = 2;
+}
index 930e3e3a1c87b514de4a6a2598f09c88341d26c7..c9fc72df6c7f67a7f9453f660be935bb92ba1534 100644 (file)
@@ -51,18 +51,18 @@ public class BatchOutputReaderTest {
   private void initFiles(File dir) {
     BatchOutputWriter writer = new BatchOutputWriter(dir);
 
-    BatchOutput.ReportMetadata.Builder metadata = BatchOutput.ReportMetadata.newBuilder()
+    BatchReport.Metadata.Builder metadata = BatchReport.Metadata.newBuilder()
       .setAnalysisDate(15000000L)
       .setProjectKey("PROJECT_A")
       .setRootComponentRef(1);
     writer.writeMetadata(metadata.build());
 
-    BatchOutput.ReportComponent.Builder component = BatchOutput.ReportComponent.newBuilder()
+    BatchReport.Component.Builder component = BatchReport.Component.newBuilder()
       .setRef(1)
       .setUuid("UUID_A");
     writer.writeComponent(component.build());
 
-    BatchOutput.ReportIssue issue = BatchOutput.ReportIssue.newBuilder()
+    BatchReport.Issue issue = BatchReport.Issue.newBuilder()
       .setUuid("ISSUE_A")
       .setLine(50)
       .build();
index 9261f1b1eaa061d012a163dadbbc0d78d16efb5f..ed1d4362048b734620f98d9e0b25e86663081fb8 100644 (file)
@@ -50,13 +50,13 @@ public class BatchOutputWriterTest {
   public void write_metadata() throws Exception {
     File dir = temp.newFolder();
     BatchOutputWriter writer = new BatchOutputWriter(dir);
-    BatchOutput.ReportMetadata.Builder metadata = BatchOutput.ReportMetadata.newBuilder()
+    BatchReport.Metadata.Builder metadata = BatchReport.Metadata.newBuilder()
       .setAnalysisDate(15000000L)
       .setProjectKey("PROJECT_A")
       .setRootComponentRef(1);
     writer.writeMetadata(metadata.build());
 
-    BatchOutput.ReportMetadata read = ProtobufUtil.readFile(writer.getFileStructure().metadataFile(), BatchOutput.ReportMetadata.PARSER);
+    BatchReport.Metadata read = ProtobufUtil.readFile(writer.getFileStructure().metadataFile(), BatchReport.Metadata.PARSER);
     assertThat(read.getAnalysisDate()).isEqualTo(15000000L);
     assertThat(read.getProjectKey()).isEqualTo("PROJECT_A");
     assertThat(read.getRootComponentRef()).isEqualTo(1);
@@ -71,7 +71,7 @@ public class BatchOutputWriterTest {
     assertThat(writer.hasComponentData(FileStructure.Domain.COMPONENT, 1)).isFalse();
 
     // write data
-    BatchOutput.ReportComponent.Builder component = BatchOutput.ReportComponent.newBuilder()
+    BatchReport.Component.Builder component = BatchReport.Component.newBuilder()
       .setRef(1)
       .setLanguage("java")
       .setPath("src/Foo.java")
@@ -85,7 +85,7 @@ public class BatchOutputWriterTest {
     assertThat(writer.hasComponentData(FileStructure.Domain.COMPONENT, 1)).isTrue();
     File file = writer.getFileStructure().fileFor(FileStructure.Domain.COMPONENT, 1);
     assertThat(file).exists().isFile();
-    BatchOutput.ReportComponent read = ProtobufUtil.readFile(file, BatchOutput.ReportComponent.PARSER);
+    BatchReport.Component read = ProtobufUtil.readFile(file, BatchReport.Component.PARSER);
     assertThat(read.getRef()).isEqualTo(1);
     assertThat(read.getChildRefsList()).containsOnly(5, 42);
     assertThat(read.hasName()).isFalse();
@@ -102,7 +102,7 @@ public class BatchOutputWriterTest {
     assertThat(writer.hasComponentData(FileStructure.Domain.ISSUES, 1)).isFalse();
 
     // write data
-    BatchOutput.ReportIssue issue = BatchOutput.ReportIssue.newBuilder()
+    BatchReport.Issue issue = BatchReport.Issue.newBuilder()
       .setUuid("ISSUE_A")
       .setLine(50)
       .setMsg("the message")
@@ -113,7 +113,7 @@ public class BatchOutputWriterTest {
     assertThat(writer.hasComponentData(FileStructure.Domain.ISSUES, 1)).isTrue();
     File file = writer.getFileStructure().fileFor(FileStructure.Domain.ISSUES, 1);
     assertThat(file).exists().isFile();
-    BatchOutput.ReportIssues read = ProtobufUtil.readFile(file, BatchOutput.ReportIssues.PARSER);
+    BatchReport.Issues read = ProtobufUtil.readFile(file, BatchReport.Issues.PARSER);
     assertThat(read.getComponentRef()).isEqualTo(1);
     assertThat(read.getListCount()).isEqualTo(1);
   }
index 797a479a2dc21032a9d0a813bc59387737843904..3604685d66f5037e9e5ea65d30a4d664f8bed186 100644 (file)
@@ -27,8 +27,8 @@ import org.sonar.api.resources.ResourceUtils;
 import org.sonar.batch.index.BatchResource;
 import org.sonar.batch.index.ResourceCache;
 import org.sonar.batch.protocol.Constants;
-import org.sonar.batch.protocol.output.BatchOutput;
 import org.sonar.batch.protocol.output.BatchOutputWriter;
+import org.sonar.batch.protocol.output.BatchReport;
 
 import javax.annotation.CheckForNull;
 
@@ -48,7 +48,7 @@ public class ComponentsPublisher implements ReportPublisher {
   @Override
   public void publish(BatchOutputWriter writer) {
     BatchResource rootProject = resourceCache.get(reactor.getRoot().getKeyWithBranch());
-    BatchOutput.ReportMetadata metadata = BatchOutput.ReportMetadata.newBuilder()
+    BatchReport.Metadata metadata = BatchReport.Metadata.newBuilder()
       .setAnalysisDate(((Project) rootProject.resource()).getAnalysisDate().getTime())
       .setProjectKey(((Project) rootProject.resource()).key())
       .setRootComponentRef(rootProject.batchId())
@@ -59,7 +59,7 @@ public class ComponentsPublisher implements ReportPublisher {
 
   private void recursiveWriteComponent(BatchResource batchResource, BatchOutputWriter writer) {
     Resource r = batchResource.resource();
-    BatchOutput.ReportComponent.Builder builder = BatchOutput.ReportComponent.newBuilder();
+    BatchReport.Component.Builder builder = BatchReport.Component.newBuilder();
 
     // non-null fields
     builder.setRef(batchResource.batchId());
index 9f4a2857c3a269b72919f4f30ba128196e79119a..0e135f8c3731886f557febf4ec56ead21312aa18 100644 (file)
@@ -29,7 +29,7 @@ import org.sonar.batch.index.ResourceCache;
 import org.sonar.batch.issue.IssueCache;
 import org.sonar.batch.protocol.Constants;
 import org.sonar.batch.protocol.output.BatchOutputWriter;
-import org.sonar.batch.protocol.output.BatchOutput;
+import org.sonar.batch.protocol.output.BatchReport;
 
 import javax.annotation.Nullable;
 
@@ -49,17 +49,17 @@ public class IssuesPublisher implements ReportPublisher {
   public void publish(BatchOutputWriter writer) {
     for (BatchResource resource : resourceCache.all()) {
       Iterable<DefaultIssue> issues = issueCache.byComponent(resource.resource().getEffectiveKey());
-      writer.writeComponentIssues(resource.batchId(), Iterables.transform(issues, new Function<DefaultIssue, BatchOutput.ReportIssue>() {
+      writer.writeComponentIssues(resource.batchId(), Iterables.transform(issues, new Function<DefaultIssue, BatchReport.Issue>() {
         @Override
-        public BatchOutput.ReportIssue apply(DefaultIssue input) {
+        public BatchReport.Issue apply(DefaultIssue input) {
           return toReportIssue(input);
         }
       }));
     }
   }
 
-  private BatchOutput.ReportIssue toReportIssue(DefaultIssue issue) {
-    BatchOutput.ReportIssue.Builder builder = BatchOutput.ReportIssue.newBuilder();
+  private BatchReport.Issue toReportIssue(DefaultIssue issue) {
+    BatchReport.Issue.Builder builder = BatchReport.Issue.newBuilder();
 
     // non-null fields
     builder.setUuid(issue.key());