]> source.dussan.org Git - sonarqube.git/commitdiff
Move protobuf specs of WS into new module sonar-ws
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Wed, 29 Jul 2015 15:17:46 +0000 (17:17 +0200)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Thu, 30 Jul 2015 09:43:17 +0000 (11:43 +0200)
16 files changed:
compile_protobuf.sh
pom.xml
server/sonar-server/pom.xml
server/sonar-server/src/main/gen-java/org/sonarqube/ws/Common.java [deleted file]
server/sonar-server/src/main/gen-java/org/sonarqube/ws/Issues.java [deleted file]
server/sonar-server/src/main/gen-java/org/sonarqube/ws/Rules.java [deleted file]
server/sonar-server/src/main/protobuf/ws-common.proto [deleted file]
server/sonar-server/src/main/protobuf/ws-issues.proto [deleted file]
server/sonar-server/src/main/protobuf/ws-rules.proto [deleted file]
sonar-ws/pom.xml [new file with mode: 0644]
sonar-ws/src/main/gen-java/org/sonarqube/ws/Common.java [new file with mode: 0644]
sonar-ws/src/main/gen-java/org/sonarqube/ws/Issues.java [new file with mode: 0644]
sonar-ws/src/main/gen-java/org/sonarqube/ws/Rules.java [new file with mode: 0644]
sonar-ws/src/main/protobuf/ws-common.proto [new file with mode: 0644]
sonar-ws/src/main/protobuf/ws-issues.proto [new file with mode: 0644]
sonar-ws/src/main/protobuf/ws-rules.proto [new file with mode: 0644]

index 8624c23061aaa762c44e7386d021d0ac41eb1237..38429335487efb07098d2f52347dcb6306a85db5 100755 (executable)
@@ -20,7 +20,7 @@ function compile_protobuf {
 compile_protobuf "sonar-batch-protocol" "main"
 compile_protobuf "sonar-core" "test"
 compile_protobuf "sonar-db" "main"
-compile_protobuf "server/sonar-server" "main"
+compile_protobuf "sonar-ws" "main"
 
 
 
diff --git a/pom.xml b/pom.xml
index 120f6405e1e66624a8ddedccc11fc16f842a0a5d..814541531fb29049c6d3196736d2b428e4729d5b 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -26,6 +26,7 @@
     <module>sonar-markdown</module>
     <module>sonar-plugin-api</module>
     <module>server</module>
+    <module>sonar-ws</module>
     <module>sonar-testing-harness</module>
     <module>plugins/sonar-xoo-plugin</module>
     <module>plugins/sonar-batch-maven-plugin</module>
index dbf10b60e4b1a229d32d52601cfc5bac1f6595c8..5caf02b187bbe4be33b09ccec630f3816fdc6953 100644 (file)
       <groupId>org.elasticsearch</groupId>
       <artifactId>elasticsearch</artifactId>
     </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>sonar-ws</artifactId>
+      <version>${project.version}</version>
+    </dependency>
     <dependency>
       <groupId>com.google.code.findbugs</groupId>
       <artifactId>jsr305</artifactId>
     </testResources>
 
     <plugins>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>build-helper-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>add-source</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>add-source</goal>
-            </goals>
-            <configuration>
-              <sources>
-                <source>src/main/gen-java</source>
-              </sources>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
diff --git a/server/sonar-server/src/main/gen-java/org/sonarqube/ws/Common.java b/server/sonar-server/src/main/gen-java/org/sonarqube/ws/Common.java
deleted file mode 100644 (file)
index 75b15ce..0000000
+++ /dev/null
@@ -1,6017 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: ws-common.proto
-
-package org.sonarqube.ws;
-
-public final class Common {
-  private Common() {}
-  public static void registerAllExtensions(
-      com.google.protobuf.ExtensionRegistry registry) {
-  }
-  /**
-   * Protobuf enum {@code sonarqube.ws.RuleStatus}
-   */
-  public enum RuleStatus
-      implements com.google.protobuf.ProtocolMessageEnum {
-    /**
-     * <code>BETA = 0;</code>
-     */
-    BETA(0, 0),
-    /**
-     * <code>DEPRECATED = 1;</code>
-     */
-    DEPRECATED(1, 1),
-    /**
-     * <code>READY = 2;</code>
-     */
-    READY(2, 2),
-    /**
-     * <code>REMOVED = 3;</code>
-     */
-    REMOVED(3, 3),
-    ;
-
-    /**
-     * <code>BETA = 0;</code>
-     */
-    public static final int BETA_VALUE = 0;
-    /**
-     * <code>DEPRECATED = 1;</code>
-     */
-    public static final int DEPRECATED_VALUE = 1;
-    /**
-     * <code>READY = 2;</code>
-     */
-    public static final int READY_VALUE = 2;
-    /**
-     * <code>REMOVED = 3;</code>
-     */
-    public static final int REMOVED_VALUE = 3;
-
-
-    public final int getNumber() { return value; }
-
-    public static RuleStatus valueOf(int value) {
-      switch (value) {
-        case 0: return BETA;
-        case 1: return DEPRECATED;
-        case 2: return READY;
-        case 3: return REMOVED;
-        default: return null;
-      }
-    }
-
-    public static com.google.protobuf.Internal.EnumLiteMap<RuleStatus>
-        internalGetValueMap() {
-      return internalValueMap;
-    }
-    private static com.google.protobuf.Internal.EnumLiteMap<RuleStatus>
-        internalValueMap =
-          new com.google.protobuf.Internal.EnumLiteMap<RuleStatus>() {
-            public RuleStatus findValueByNumber(int number) {
-              return RuleStatus.valueOf(number);
-            }
-          };
-
-    public final com.google.protobuf.Descriptors.EnumValueDescriptor
-        getValueDescriptor() {
-      return getDescriptor().getValues().get(index);
-    }
-    public final com.google.protobuf.Descriptors.EnumDescriptor
-        getDescriptorForType() {
-      return getDescriptor();
-    }
-    public static final com.google.protobuf.Descriptors.EnumDescriptor
-        getDescriptor() {
-      return org.sonarqube.ws.Common.getDescriptor().getEnumTypes().get(0);
-    }
-
-    private static final RuleStatus[] VALUES = values();
-
-    public static RuleStatus valueOf(
-        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
-      if (desc.getType() != getDescriptor()) {
-        throw new java.lang.IllegalArgumentException(
-          "EnumValueDescriptor is not for this type.");
-      }
-      return VALUES[desc.getIndex()];
-    }
-
-    private final int index;
-    private final int value;
-
-    private RuleStatus(int index, int value) {
-      this.index = index;
-      this.value = value;
-    }
-
-    // @@protoc_insertion_point(enum_scope:sonarqube.ws.RuleStatus)
-  }
-
-  public interface PagingOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:sonarqube.ws.Paging)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>optional int32 page_index = 1;</code>
-     */
-    boolean hasPageIndex();
-    /**
-     * <code>optional int32 page_index = 1;</code>
-     */
-    int getPageIndex();
-
-    /**
-     * <code>optional int32 page_size = 2;</code>
-     */
-    boolean hasPageSize();
-    /**
-     * <code>optional int32 page_size = 2;</code>
-     */
-    int getPageSize();
-
-    /**
-     * <code>optional int32 total = 3;</code>
-     */
-    boolean hasTotal();
-    /**
-     * <code>optional int32 total = 3;</code>
-     */
-    int getTotal();
-
-    /**
-     * <code>optional int32 pages = 4;</code>
-     */
-    boolean hasPages();
-    /**
-     * <code>optional int32 pages = 4;</code>
-     */
-    int getPages();
-  }
-  /**
-   * Protobuf type {@code sonarqube.ws.Paging}
-   */
-  public static final class Paging extends
-      com.google.protobuf.GeneratedMessage implements
-      // @@protoc_insertion_point(message_implements:sonarqube.ws.Paging)
-      PagingOrBuilder {
-    // Use Paging.newBuilder() to construct.
-    private Paging(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private Paging(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final Paging defaultInstance;
-    public static Paging getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    public Paging getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Paging(
-        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;
-              pageIndex_ = input.readInt32();
-              break;
-            }
-            case 16: {
-              bitField0_ |= 0x00000002;
-              pageSize_ = input.readInt32();
-              break;
-            }
-            case 24: {
-              bitField0_ |= 0x00000004;
-              total_ = input.readInt32();
-              break;
-            }
-            case 32: {
-              bitField0_ |= 0x00000008;
-              pages_ = 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.sonarqube.ws.Common.internal_static_sonarqube_ws_Paging_descriptor;
-    }
-
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Paging_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              org.sonarqube.ws.Common.Paging.class, org.sonarqube.ws.Common.Paging.Builder.class);
-    }
-
-    public static com.google.protobuf.Parser<Paging> PARSER =
-        new com.google.protobuf.AbstractParser<Paging>() {
-      public Paging parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Paging(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<Paging> getParserForType() {
-      return PARSER;
-    }
-
-    private int bitField0_;
-    public static final int PAGE_INDEX_FIELD_NUMBER = 1;
-    private int pageIndex_;
-    /**
-     * <code>optional int32 page_index = 1;</code>
-     */
-    public boolean hasPageIndex() {
-      return ((bitField0_ & 0x00000001) == 0x00000001);
-    }
-    /**
-     * <code>optional int32 page_index = 1;</code>
-     */
-    public int getPageIndex() {
-      return pageIndex_;
-    }
-
-    public static final int PAGE_SIZE_FIELD_NUMBER = 2;
-    private int pageSize_;
-    /**
-     * <code>optional int32 page_size = 2;</code>
-     */
-    public boolean hasPageSize() {
-      return ((bitField0_ & 0x00000002) == 0x00000002);
-    }
-    /**
-     * <code>optional int32 page_size = 2;</code>
-     */
-    public int getPageSize() {
-      return pageSize_;
-    }
-
-    public static final int TOTAL_FIELD_NUMBER = 3;
-    private int total_;
-    /**
-     * <code>optional int32 total = 3;</code>
-     */
-    public boolean hasTotal() {
-      return ((bitField0_ & 0x00000004) == 0x00000004);
-    }
-    /**
-     * <code>optional int32 total = 3;</code>
-     */
-    public int getTotal() {
-      return total_;
-    }
-
-    public static final int PAGES_FIELD_NUMBER = 4;
-    private int pages_;
-    /**
-     * <code>optional int32 pages = 4;</code>
-     */
-    public boolean hasPages() {
-      return ((bitField0_ & 0x00000008) == 0x00000008);
-    }
-    /**
-     * <code>optional int32 pages = 4;</code>
-     */
-    public int getPages() {
-      return pages_;
-    }
-
-    private void initFields() {
-      pageIndex_ = 0;
-      pageSize_ = 0;
-      total_ = 0;
-      pages_ = 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.writeInt32(1, pageIndex_);
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeInt32(2, pageSize_);
-      }
-      if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        output.writeInt32(3, total_);
-      }
-      if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        output.writeInt32(4, pages_);
-      }
-      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, pageIndex_);
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(2, pageSize_);
-      }
-      if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(3, total_);
-      }
-      if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(4, pages_);
-      }
-      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.sonarqube.ws.Common.Paging parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonarqube.ws.Common.Paging parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.Paging parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonarqube.ws.Common.Paging parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.Paging parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonarqube.ws.Common.Paging parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.Paging parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
-    }
-    public static org.sonarqube.ws.Common.Paging parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.Paging parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonarqube.ws.Common.Paging 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.sonarqube.ws.Common.Paging 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 sonarqube.ws.Paging}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:sonarqube.ws.Paging)
-        org.sonarqube.ws.Common.PagingOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Paging_descriptor;
-      }
-
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Paging_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                org.sonarqube.ws.Common.Paging.class, org.sonarqube.ws.Common.Paging.Builder.class);
-      }
-
-      // Construct using org.sonarqube.ws.Common.Paging.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();
-        pageIndex_ = 0;
-        bitField0_ = (bitField0_ & ~0x00000001);
-        pageSize_ = 0;
-        bitField0_ = (bitField0_ & ~0x00000002);
-        total_ = 0;
-        bitField0_ = (bitField0_ & ~0x00000004);
-        pages_ = 0;
-        bitField0_ = (bitField0_ & ~0x00000008);
-        return this;
-      }
-
-      public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Paging_descriptor;
-      }
-
-      public org.sonarqube.ws.Common.Paging getDefaultInstanceForType() {
-        return org.sonarqube.ws.Common.Paging.getDefaultInstance();
-      }
-
-      public org.sonarqube.ws.Common.Paging build() {
-        org.sonarqube.ws.Common.Paging result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      public org.sonarqube.ws.Common.Paging buildPartial() {
-        org.sonarqube.ws.Common.Paging result = new org.sonarqube.ws.Common.Paging(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.pageIndex_ = pageIndex_;
-        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.pageSize_ = pageSize_;
-        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
-          to_bitField0_ |= 0x00000004;
-        }
-        result.total_ = total_;
-        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
-          to_bitField0_ |= 0x00000008;
-        }
-        result.pages_ = pages_;
-        result.bitField0_ = to_bitField0_;
-        onBuilt();
-        return result;
-      }
-
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.sonarqube.ws.Common.Paging) {
-          return mergeFrom((org.sonarqube.ws.Common.Paging)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(org.sonarqube.ws.Common.Paging other) {
-        if (other == org.sonarqube.ws.Common.Paging.getDefaultInstance()) return this;
-        if (other.hasPageIndex()) {
-          setPageIndex(other.getPageIndex());
-        }
-        if (other.hasPageSize()) {
-          setPageSize(other.getPageSize());
-        }
-        if (other.hasTotal()) {
-          setTotal(other.getTotal());
-        }
-        if (other.hasPages()) {
-          setPages(other.getPages());
-        }
-        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.sonarqube.ws.Common.Paging parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.sonarqube.ws.Common.Paging) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private int pageIndex_ ;
-      /**
-       * <code>optional int32 page_index = 1;</code>
-       */
-      public boolean hasPageIndex() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
-       * <code>optional int32 page_index = 1;</code>
-       */
-      public int getPageIndex() {
-        return pageIndex_;
-      }
-      /**
-       * <code>optional int32 page_index = 1;</code>
-       */
-      public Builder setPageIndex(int value) {
-        bitField0_ |= 0x00000001;
-        pageIndex_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional int32 page_index = 1;</code>
-       */
-      public Builder clearPageIndex() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        pageIndex_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private int pageSize_ ;
-      /**
-       * <code>optional int32 page_size = 2;</code>
-       */
-      public boolean hasPageSize() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
-      }
-      /**
-       * <code>optional int32 page_size = 2;</code>
-       */
-      public int getPageSize() {
-        return pageSize_;
-      }
-      /**
-       * <code>optional int32 page_size = 2;</code>
-       */
-      public Builder setPageSize(int value) {
-        bitField0_ |= 0x00000002;
-        pageSize_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional int32 page_size = 2;</code>
-       */
-      public Builder clearPageSize() {
-        bitField0_ = (bitField0_ & ~0x00000002);
-        pageSize_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private int total_ ;
-      /**
-       * <code>optional int32 total = 3;</code>
-       */
-      public boolean hasTotal() {
-        return ((bitField0_ & 0x00000004) == 0x00000004);
-      }
-      /**
-       * <code>optional int32 total = 3;</code>
-       */
-      public int getTotal() {
-        return total_;
-      }
-      /**
-       * <code>optional int32 total = 3;</code>
-       */
-      public Builder setTotal(int value) {
-        bitField0_ |= 0x00000004;
-        total_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional int32 total = 3;</code>
-       */
-      public Builder clearTotal() {
-        bitField0_ = (bitField0_ & ~0x00000004);
-        total_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private int pages_ ;
-      /**
-       * <code>optional int32 pages = 4;</code>
-       */
-      public boolean hasPages() {
-        return ((bitField0_ & 0x00000008) == 0x00000008);
-      }
-      /**
-       * <code>optional int32 pages = 4;</code>
-       */
-      public int getPages() {
-        return pages_;
-      }
-      /**
-       * <code>optional int32 pages = 4;</code>
-       */
-      public Builder setPages(int value) {
-        bitField0_ |= 0x00000008;
-        pages_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional int32 pages = 4;</code>
-       */
-      public Builder clearPages() {
-        bitField0_ = (bitField0_ & ~0x00000008);
-        pages_ = 0;
-        onChanged();
-        return this;
-      }
-
-      // @@protoc_insertion_point(builder_scope:sonarqube.ws.Paging)
-    }
-
-    static {
-      defaultInstance = new Paging(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:sonarqube.ws.Paging)
-  }
-
-  public interface FacetOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:sonarqube.ws.Facet)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>optional string property = 1;</code>
-     *
-     * <pre>
-     * kind of key
-     * </pre>
-     */
-    boolean hasProperty();
-    /**
-     * <code>optional string property = 1;</code>
-     *
-     * <pre>
-     * kind of key
-     * </pre>
-     */
-    java.lang.String getProperty();
-    /**
-     * <code>optional string property = 1;</code>
-     *
-     * <pre>
-     * kind of key
-     * </pre>
-     */
-    com.google.protobuf.ByteString
-        getPropertyBytes();
-
-    /**
-     * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-     */
-    java.util.List<org.sonarqube.ws.Common.FacetValue> 
-        getValuesList();
-    /**
-     * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-     */
-    org.sonarqube.ws.Common.FacetValue getValues(int index);
-    /**
-     * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-     */
-    int getValuesCount();
-    /**
-     * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-     */
-    java.util.List<? extends org.sonarqube.ws.Common.FacetValueOrBuilder> 
-        getValuesOrBuilderList();
-    /**
-     * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-     */
-    org.sonarqube.ws.Common.FacetValueOrBuilder getValuesOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code sonarqube.ws.Facet}
-   */
-  public static final class Facet extends
-      com.google.protobuf.GeneratedMessage implements
-      // @@protoc_insertion_point(message_implements:sonarqube.ws.Facet)
-      FacetOrBuilder {
-    // Use Facet.newBuilder() to construct.
-    private Facet(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private Facet(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final Facet defaultInstance;
-    public static Facet getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    public Facet getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Facet(
-        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;
-              property_ = bs;
-              break;
-            }
-            case 18: {
-              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-                values_ = new java.util.ArrayList<org.sonarqube.ws.Common.FacetValue>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              values_.add(input.readMessage(org.sonarqube.ws.Common.FacetValue.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)) {
-          values_ = java.util.Collections.unmodifiableList(values_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Facet_descriptor;
-    }
-
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Facet_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              org.sonarqube.ws.Common.Facet.class, org.sonarqube.ws.Common.Facet.Builder.class);
-    }
-
-    public static com.google.protobuf.Parser<Facet> PARSER =
-        new com.google.protobuf.AbstractParser<Facet>() {
-      public Facet parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Facet(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<Facet> getParserForType() {
-      return PARSER;
-    }
-
-    private int bitField0_;
-    public static final int PROPERTY_FIELD_NUMBER = 1;
-    private java.lang.Object property_;
-    /**
-     * <code>optional string property = 1;</code>
-     *
-     * <pre>
-     * kind of key
-     * </pre>
-     */
-    public boolean hasProperty() {
-      return ((bitField0_ & 0x00000001) == 0x00000001);
-    }
-    /**
-     * <code>optional string property = 1;</code>
-     *
-     * <pre>
-     * kind of key
-     * </pre>
-     */
-    public java.lang.String getProperty() {
-      java.lang.Object ref = property_;
-      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()) {
-          property_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string property = 1;</code>
-     *
-     * <pre>
-     * kind of key
-     * </pre>
-     */
-    public com.google.protobuf.ByteString
-        getPropertyBytes() {
-      java.lang.Object ref = property_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        property_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int VALUES_FIELD_NUMBER = 2;
-    private java.util.List<org.sonarqube.ws.Common.FacetValue> values_;
-    /**
-     * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-     */
-    public java.util.List<org.sonarqube.ws.Common.FacetValue> getValuesList() {
-      return values_;
-    }
-    /**
-     * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-     */
-    public java.util.List<? extends org.sonarqube.ws.Common.FacetValueOrBuilder> 
-        getValuesOrBuilderList() {
-      return values_;
-    }
-    /**
-     * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-     */
-    public int getValuesCount() {
-      return values_.size();
-    }
-    /**
-     * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-     */
-    public org.sonarqube.ws.Common.FacetValue getValues(int index) {
-      return values_.get(index);
-    }
-    /**
-     * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-     */
-    public org.sonarqube.ws.Common.FacetValueOrBuilder getValuesOrBuilder(
-        int index) {
-      return values_.get(index);
-    }
-
-    private void initFields() {
-      property_ = "";
-      values_ = 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.writeBytes(1, getPropertyBytes());
-      }
-      for (int i = 0; i < values_.size(); i++) {
-        output.writeMessage(2, values_.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
-          .computeBytesSize(1, getPropertyBytes());
-      }
-      for (int i = 0; i < values_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, values_.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.sonarqube.ws.Common.Facet parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonarqube.ws.Common.Facet parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.Facet parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonarqube.ws.Common.Facet parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.Facet parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonarqube.ws.Common.Facet parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.Facet parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
-    }
-    public static org.sonarqube.ws.Common.Facet parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.Facet parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonarqube.ws.Common.Facet 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.sonarqube.ws.Common.Facet 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 sonarqube.ws.Facet}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:sonarqube.ws.Facet)
-        org.sonarqube.ws.Common.FacetOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Facet_descriptor;
-      }
-
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Facet_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                org.sonarqube.ws.Common.Facet.class, org.sonarqube.ws.Common.Facet.Builder.class);
-      }
-
-      // Construct using org.sonarqube.ws.Common.Facet.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
-          getValuesFieldBuilder();
-        }
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      public Builder clear() {
-        super.clear();
-        property_ = "";
-        bitField0_ = (bitField0_ & ~0x00000001);
-        if (valuesBuilder_ == null) {
-          values_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-        } else {
-          valuesBuilder_.clear();
-        }
-        return this;
-      }
-
-      public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Facet_descriptor;
-      }
-
-      public org.sonarqube.ws.Common.Facet getDefaultInstanceForType() {
-        return org.sonarqube.ws.Common.Facet.getDefaultInstance();
-      }
-
-      public org.sonarqube.ws.Common.Facet build() {
-        org.sonarqube.ws.Common.Facet result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      public org.sonarqube.ws.Common.Facet buildPartial() {
-        org.sonarqube.ws.Common.Facet result = new org.sonarqube.ws.Common.Facet(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.property_ = property_;
-        if (valuesBuilder_ == null) {
-          if (((bitField0_ & 0x00000002) == 0x00000002)) {
-            values_ = java.util.Collections.unmodifiableList(values_);
-            bitField0_ = (bitField0_ & ~0x00000002);
-          }
-          result.values_ = values_;
-        } else {
-          result.values_ = valuesBuilder_.build();
-        }
-        result.bitField0_ = to_bitField0_;
-        onBuilt();
-        return result;
-      }
-
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.sonarqube.ws.Common.Facet) {
-          return mergeFrom((org.sonarqube.ws.Common.Facet)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(org.sonarqube.ws.Common.Facet other) {
-        if (other == org.sonarqube.ws.Common.Facet.getDefaultInstance()) return this;
-        if (other.hasProperty()) {
-          bitField0_ |= 0x00000001;
-          property_ = other.property_;
-          onChanged();
-        }
-        if (valuesBuilder_ == null) {
-          if (!other.values_.isEmpty()) {
-            if (values_.isEmpty()) {
-              values_ = other.values_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-            } else {
-              ensureValuesIsMutable();
-              values_.addAll(other.values_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.values_.isEmpty()) {
-            if (valuesBuilder_.isEmpty()) {
-              valuesBuilder_.dispose();
-              valuesBuilder_ = null;
-              values_ = other.values_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-              valuesBuilder_ = 
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
-                   getValuesFieldBuilder() : null;
-            } else {
-              valuesBuilder_.addAllMessages(other.values_);
-            }
-          }
-        }
-        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.sonarqube.ws.Common.Facet parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.sonarqube.ws.Common.Facet) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.lang.Object property_ = "";
-      /**
-       * <code>optional string property = 1;</code>
-       *
-       * <pre>
-       * kind of key
-       * </pre>
-       */
-      public boolean hasProperty() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
-       * <code>optional string property = 1;</code>
-       *
-       * <pre>
-       * kind of key
-       * </pre>
-       */
-      public java.lang.String getProperty() {
-        java.lang.Object ref = property_;
-        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()) {
-            property_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string property = 1;</code>
-       *
-       * <pre>
-       * kind of key
-       * </pre>
-       */
-      public com.google.protobuf.ByteString
-          getPropertyBytes() {
-        java.lang.Object ref = property_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          property_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string property = 1;</code>
-       *
-       * <pre>
-       * kind of key
-       * </pre>
-       */
-      public Builder setProperty(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        property_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string property = 1;</code>
-       *
-       * <pre>
-       * kind of key
-       * </pre>
-       */
-      public Builder clearProperty() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        property_ = getDefaultInstance().getProperty();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string property = 1;</code>
-       *
-       * <pre>
-       * kind of key
-       * </pre>
-       */
-      public Builder setPropertyBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        property_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.util.List<org.sonarqube.ws.Common.FacetValue> values_ =
-        java.util.Collections.emptyList();
-      private void ensureValuesIsMutable() {
-        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
-          values_ = new java.util.ArrayList<org.sonarqube.ws.Common.FacetValue>(values_);
-          bitField0_ |= 0x00000002;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.sonarqube.ws.Common.FacetValue, org.sonarqube.ws.Common.FacetValue.Builder, org.sonarqube.ws.Common.FacetValueOrBuilder> valuesBuilder_;
-
-      /**
-       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-       */
-      public java.util.List<org.sonarqube.ws.Common.FacetValue> getValuesList() {
-        if (valuesBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(values_);
-        } else {
-          return valuesBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-       */
-      public int getValuesCount() {
-        if (valuesBuilder_ == null) {
-          return values_.size();
-        } else {
-          return valuesBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-       */
-      public org.sonarqube.ws.Common.FacetValue getValues(int index) {
-        if (valuesBuilder_ == null) {
-          return values_.get(index);
-        } else {
-          return valuesBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-       */
-      public Builder setValues(
-          int index, org.sonarqube.ws.Common.FacetValue value) {
-        if (valuesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureValuesIsMutable();
-          values_.set(index, value);
-          onChanged();
-        } else {
-          valuesBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-       */
-      public Builder setValues(
-          int index, org.sonarqube.ws.Common.FacetValue.Builder builderForValue) {
-        if (valuesBuilder_ == null) {
-          ensureValuesIsMutable();
-          values_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          valuesBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-       */
-      public Builder addValues(org.sonarqube.ws.Common.FacetValue value) {
-        if (valuesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureValuesIsMutable();
-          values_.add(value);
-          onChanged();
-        } else {
-          valuesBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-       */
-      public Builder addValues(
-          int index, org.sonarqube.ws.Common.FacetValue value) {
-        if (valuesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureValuesIsMutable();
-          values_.add(index, value);
-          onChanged();
-        } else {
-          valuesBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-       */
-      public Builder addValues(
-          org.sonarqube.ws.Common.FacetValue.Builder builderForValue) {
-        if (valuesBuilder_ == null) {
-          ensureValuesIsMutable();
-          values_.add(builderForValue.build());
-          onChanged();
-        } else {
-          valuesBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-       */
-      public Builder addValues(
-          int index, org.sonarqube.ws.Common.FacetValue.Builder builderForValue) {
-        if (valuesBuilder_ == null) {
-          ensureValuesIsMutable();
-          values_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          valuesBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-       */
-      public Builder addAllValues(
-          java.lang.Iterable<? extends org.sonarqube.ws.Common.FacetValue> values) {
-        if (valuesBuilder_ == null) {
-          ensureValuesIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, values_);
-          onChanged();
-        } else {
-          valuesBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-       */
-      public Builder clearValues() {
-        if (valuesBuilder_ == null) {
-          values_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-          onChanged();
-        } else {
-          valuesBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-       */
-      public Builder removeValues(int index) {
-        if (valuesBuilder_ == null) {
-          ensureValuesIsMutable();
-          values_.remove(index);
-          onChanged();
-        } else {
-          valuesBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-       */
-      public org.sonarqube.ws.Common.FacetValue.Builder getValuesBuilder(
-          int index) {
-        return getValuesFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-       */
-      public org.sonarqube.ws.Common.FacetValueOrBuilder getValuesOrBuilder(
-          int index) {
-        if (valuesBuilder_ == null) {
-          return values_.get(index);  } else {
-          return valuesBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-       */
-      public java.util.List<? extends org.sonarqube.ws.Common.FacetValueOrBuilder> 
-           getValuesOrBuilderList() {
-        if (valuesBuilder_ != null) {
-          return valuesBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(values_);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-       */
-      public org.sonarqube.ws.Common.FacetValue.Builder addValuesBuilder() {
-        return getValuesFieldBuilder().addBuilder(
-            org.sonarqube.ws.Common.FacetValue.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-       */
-      public org.sonarqube.ws.Common.FacetValue.Builder addValuesBuilder(
-          int index) {
-        return getValuesFieldBuilder().addBuilder(
-            index, org.sonarqube.ws.Common.FacetValue.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
-       */
-      public java.util.List<org.sonarqube.ws.Common.FacetValue.Builder> 
-           getValuesBuilderList() {
-        return getValuesFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.sonarqube.ws.Common.FacetValue, org.sonarqube.ws.Common.FacetValue.Builder, org.sonarqube.ws.Common.FacetValueOrBuilder> 
-          getValuesFieldBuilder() {
-        if (valuesBuilder_ == null) {
-          valuesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              org.sonarqube.ws.Common.FacetValue, org.sonarqube.ws.Common.FacetValue.Builder, org.sonarqube.ws.Common.FacetValueOrBuilder>(
-                  values_,
-                  ((bitField0_ & 0x00000002) == 0x00000002),
-                  getParentForChildren(),
-                  isClean());
-          values_ = null;
-        }
-        return valuesBuilder_;
-      }
-
-      // @@protoc_insertion_point(builder_scope:sonarqube.ws.Facet)
-    }
-
-    static {
-      defaultInstance = new Facet(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:sonarqube.ws.Facet)
-  }
-
-  public interface FacetValueOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:sonarqube.ws.FacetValue)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>optional string val = 1;</code>
-     */
-    boolean hasVal();
-    /**
-     * <code>optional string val = 1;</code>
-     */
-    java.lang.String getVal();
-    /**
-     * <code>optional string val = 1;</code>
-     */
-    com.google.protobuf.ByteString
-        getValBytes();
-
-    /**
-     * <code>optional int64 count = 2;</code>
-     */
-    boolean hasCount();
-    /**
-     * <code>optional int64 count = 2;</code>
-     */
-    long getCount();
-  }
-  /**
-   * Protobuf type {@code sonarqube.ws.FacetValue}
-   */
-  public static final class FacetValue extends
-      com.google.protobuf.GeneratedMessage implements
-      // @@protoc_insertion_point(message_implements:sonarqube.ws.FacetValue)
-      FacetValueOrBuilder {
-    // Use FacetValue.newBuilder() to construct.
-    private FacetValue(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private FacetValue(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final FacetValue defaultInstance;
-    public static FacetValue getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    public FacetValue getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
-      return this.unknownFields;
-    }
-    private FacetValue(
-        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;
-              val_ = bs;
-              break;
-            }
-            case 16: {
-              bitField0_ |= 0x00000002;
-              count_ = input.readInt64();
-              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.sonarqube.ws.Common.internal_static_sonarqube_ws_FacetValue_descriptor;
-    }
-
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return org.sonarqube.ws.Common.internal_static_sonarqube_ws_FacetValue_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              org.sonarqube.ws.Common.FacetValue.class, org.sonarqube.ws.Common.FacetValue.Builder.class);
-    }
-
-    public static com.google.protobuf.Parser<FacetValue> PARSER =
-        new com.google.protobuf.AbstractParser<FacetValue>() {
-      public FacetValue parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new FacetValue(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<FacetValue> getParserForType() {
-      return PARSER;
-    }
-
-    private int bitField0_;
-    public static final int VAL_FIELD_NUMBER = 1;
-    private java.lang.Object val_;
-    /**
-     * <code>optional string val = 1;</code>
-     */
-    public boolean hasVal() {
-      return ((bitField0_ & 0x00000001) == 0x00000001);
-    }
-    /**
-     * <code>optional string val = 1;</code>
-     */
-    public java.lang.String getVal() {
-      java.lang.Object ref = val_;
-      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()) {
-          val_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string val = 1;</code>
-     */
-    public com.google.protobuf.ByteString
-        getValBytes() {
-      java.lang.Object ref = val_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        val_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int COUNT_FIELD_NUMBER = 2;
-    private long count_;
-    /**
-     * <code>optional int64 count = 2;</code>
-     */
-    public boolean hasCount() {
-      return ((bitField0_ & 0x00000002) == 0x00000002);
-    }
-    /**
-     * <code>optional int64 count = 2;</code>
-     */
-    public long getCount() {
-      return count_;
-    }
-
-    private void initFields() {
-      val_ = "";
-      count_ = 0L;
-    }
-    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, getValBytes());
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeInt64(2, count_);
-      }
-      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, getValBytes());
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt64Size(2, count_);
-      }
-      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.sonarqube.ws.Common.FacetValue parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonarqube.ws.Common.FacetValue parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.FacetValue parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonarqube.ws.Common.FacetValue parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.FacetValue parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonarqube.ws.Common.FacetValue parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.FacetValue parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
-    }
-    public static org.sonarqube.ws.Common.FacetValue parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.FacetValue parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonarqube.ws.Common.FacetValue 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.sonarqube.ws.Common.FacetValue 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 sonarqube.ws.FacetValue}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:sonarqube.ws.FacetValue)
-        org.sonarqube.ws.Common.FacetValueOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_FacetValue_descriptor;
-      }
-
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_FacetValue_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                org.sonarqube.ws.Common.FacetValue.class, org.sonarqube.ws.Common.FacetValue.Builder.class);
-      }
-
-      // Construct using org.sonarqube.ws.Common.FacetValue.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();
-        val_ = "";
-        bitField0_ = (bitField0_ & ~0x00000001);
-        count_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00000002);
-        return this;
-      }
-
-      public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_FacetValue_descriptor;
-      }
-
-      public org.sonarqube.ws.Common.FacetValue getDefaultInstanceForType() {
-        return org.sonarqube.ws.Common.FacetValue.getDefaultInstance();
-      }
-
-      public org.sonarqube.ws.Common.FacetValue build() {
-        org.sonarqube.ws.Common.FacetValue result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      public org.sonarqube.ws.Common.FacetValue buildPartial() {
-        org.sonarqube.ws.Common.FacetValue result = new org.sonarqube.ws.Common.FacetValue(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.val_ = val_;
-        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.count_ = count_;
-        result.bitField0_ = to_bitField0_;
-        onBuilt();
-        return result;
-      }
-
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.sonarqube.ws.Common.FacetValue) {
-          return mergeFrom((org.sonarqube.ws.Common.FacetValue)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(org.sonarqube.ws.Common.FacetValue other) {
-        if (other == org.sonarqube.ws.Common.FacetValue.getDefaultInstance()) return this;
-        if (other.hasVal()) {
-          bitField0_ |= 0x00000001;
-          val_ = other.val_;
-          onChanged();
-        }
-        if (other.hasCount()) {
-          setCount(other.getCount());
-        }
-        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.sonarqube.ws.Common.FacetValue parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.sonarqube.ws.Common.FacetValue) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.lang.Object val_ = "";
-      /**
-       * <code>optional string val = 1;</code>
-       */
-      public boolean hasVal() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
-       * <code>optional string val = 1;</code>
-       */
-      public java.lang.String getVal() {
-        java.lang.Object ref = val_;
-        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()) {
-            val_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string val = 1;</code>
-       */
-      public com.google.protobuf.ByteString
-          getValBytes() {
-        java.lang.Object ref = val_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          val_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string val = 1;</code>
-       */
-      public Builder setVal(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        val_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string val = 1;</code>
-       */
-      public Builder clearVal() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        val_ = getDefaultInstance().getVal();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string val = 1;</code>
-       */
-      public Builder setValBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        val_ = value;
-        onChanged();
-        return this;
-      }
-
-      private long count_ ;
-      /**
-       * <code>optional int64 count = 2;</code>
-       */
-      public boolean hasCount() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
-      }
-      /**
-       * <code>optional int64 count = 2;</code>
-       */
-      public long getCount() {
-        return count_;
-      }
-      /**
-       * <code>optional int64 count = 2;</code>
-       */
-      public Builder setCount(long value) {
-        bitField0_ |= 0x00000002;
-        count_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional int64 count = 2;</code>
-       */
-      public Builder clearCount() {
-        bitField0_ = (bitField0_ & ~0x00000002);
-        count_ = 0L;
-        onChanged();
-        return this;
-      }
-
-      // @@protoc_insertion_point(builder_scope:sonarqube.ws.FacetValue)
-    }
-
-    static {
-      defaultInstance = new FacetValue(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:sonarqube.ws.FacetValue)
-  }
-
-  public interface ComponentOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:sonarqube.ws.Component)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>optional string uuid = 1;</code>
-     */
-    boolean hasUuid();
-    /**
-     * <code>optional string uuid = 1;</code>
-     */
-    java.lang.String getUuid();
-    /**
-     * <code>optional string uuid = 1;</code>
-     */
-    com.google.protobuf.ByteString
-        getUuidBytes();
-
-    /**
-     * <code>optional string key = 2;</code>
-     */
-    boolean hasKey();
-    /**
-     * <code>optional string key = 2;</code>
-     */
-    java.lang.String getKey();
-    /**
-     * <code>optional string key = 2;</code>
-     */
-    com.google.protobuf.ByteString
-        getKeyBytes();
-
-    /**
-     * <code>optional int32 id = 3;</code>
-     */
-    boolean hasId();
-    /**
-     * <code>optional int32 id = 3;</code>
-     */
-    int getId();
-
-    /**
-     * <code>optional bool enabled = 4;</code>
-     */
-    boolean hasEnabled();
-    /**
-     * <code>optional bool enabled = 4;</code>
-     */
-    boolean getEnabled();
-
-    /**
-     * <code>optional string qualifier = 5;</code>
-     */
-    boolean hasQualifier();
-    /**
-     * <code>optional string qualifier = 5;</code>
-     */
-    java.lang.String getQualifier();
-    /**
-     * <code>optional string qualifier = 5;</code>
-     */
-    com.google.protobuf.ByteString
-        getQualifierBytes();
-
-    /**
-     * <code>optional string name = 6;</code>
-     */
-    boolean hasName();
-    /**
-     * <code>optional string name = 6;</code>
-     */
-    java.lang.String getName();
-    /**
-     * <code>optional string name = 6;</code>
-     */
-    com.google.protobuf.ByteString
-        getNameBytes();
-
-    /**
-     * <code>optional string longName = 7;</code>
-     */
-    boolean hasLongName();
-    /**
-     * <code>optional string longName = 7;</code>
-     */
-    java.lang.String getLongName();
-    /**
-     * <code>optional string longName = 7;</code>
-     */
-    com.google.protobuf.ByteString
-        getLongNameBytes();
-
-    /**
-     * <code>optional string path = 8;</code>
-     */
-    boolean hasPath();
-    /**
-     * <code>optional string path = 8;</code>
-     */
-    java.lang.String getPath();
-    /**
-     * <code>optional string path = 8;</code>
-     */
-    com.google.protobuf.ByteString
-        getPathBytes();
-
-    /**
-     * <code>optional int32 projectId = 9;</code>
-     */
-    boolean hasProjectId();
-    /**
-     * <code>optional int32 projectId = 9;</code>
-     */
-    int getProjectId();
-
-    /**
-     * <code>optional int32 subProjectId = 10;</code>
-     */
-    boolean hasSubProjectId();
-    /**
-     * <code>optional int32 subProjectId = 10;</code>
-     */
-    int getSubProjectId();
-  }
-  /**
-   * Protobuf type {@code sonarqube.ws.Component}
-   */
-  public static final class Component extends
-      com.google.protobuf.GeneratedMessage implements
-      // @@protoc_insertion_point(message_implements:sonarqube.ws.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 10: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000001;
-              uuid_ = bs;
-              break;
-            }
-            case 18: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000002;
-              key_ = bs;
-              break;
-            }
-            case 24: {
-              bitField0_ |= 0x00000004;
-              id_ = input.readInt32();
-              break;
-            }
-            case 32: {
-              bitField0_ |= 0x00000008;
-              enabled_ = input.readBool();
-              break;
-            }
-            case 42: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000010;
-              qualifier_ = bs;
-              break;
-            }
-            case 50: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000020;
-              name_ = bs;
-              break;
-            }
-            case 58: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000040;
-              longName_ = bs;
-              break;
-            }
-            case 66: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000080;
-              path_ = bs;
-              break;
-            }
-            case 72: {
-              bitField0_ |= 0x00000100;
-              projectId_ = input.readInt32();
-              break;
-            }
-            case 80: {
-              bitField0_ |= 0x00000200;
-              subProjectId_ = 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.sonarqube.ws.Common.internal_static_sonarqube_ws_Component_descriptor;
-    }
-
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Component_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              org.sonarqube.ws.Common.Component.class, org.sonarqube.ws.Common.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 UUID_FIELD_NUMBER = 1;
-    private java.lang.Object uuid_;
-    /**
-     * <code>optional string uuid = 1;</code>
-     */
-    public boolean hasUuid() {
-      return ((bitField0_ & 0x00000001) == 0x00000001);
-    }
-    /**
-     * <code>optional string uuid = 1;</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 = 1;</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 KEY_FIELD_NUMBER = 2;
-    private java.lang.Object key_;
-    /**
-     * <code>optional string key = 2;</code>
-     */
-    public boolean hasKey() {
-      return ((bitField0_ & 0x00000002) == 0x00000002);
-    }
-    /**
-     * <code>optional string key = 2;</code>
-     */
-    public java.lang.String getKey() {
-      java.lang.Object ref = key_;
-      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()) {
-          key_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string key = 2;</code>
-     */
-    public com.google.protobuf.ByteString
-        getKeyBytes() {
-      java.lang.Object ref = key_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        key_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int ID_FIELD_NUMBER = 3;
-    private int id_;
-    /**
-     * <code>optional int32 id = 3;</code>
-     */
-    public boolean hasId() {
-      return ((bitField0_ & 0x00000004) == 0x00000004);
-    }
-    /**
-     * <code>optional int32 id = 3;</code>
-     */
-    public int getId() {
-      return id_;
-    }
-
-    public static final int ENABLED_FIELD_NUMBER = 4;
-    private boolean enabled_;
-    /**
-     * <code>optional bool enabled = 4;</code>
-     */
-    public boolean hasEnabled() {
-      return ((bitField0_ & 0x00000008) == 0x00000008);
-    }
-    /**
-     * <code>optional bool enabled = 4;</code>
-     */
-    public boolean getEnabled() {
-      return enabled_;
-    }
-
-    public static final int QUALIFIER_FIELD_NUMBER = 5;
-    private java.lang.Object qualifier_;
-    /**
-     * <code>optional string qualifier = 5;</code>
-     */
-    public boolean hasQualifier() {
-      return ((bitField0_ & 0x00000010) == 0x00000010);
-    }
-    /**
-     * <code>optional string qualifier = 5;</code>
-     */
-    public java.lang.String getQualifier() {
-      java.lang.Object ref = qualifier_;
-      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()) {
-          qualifier_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string qualifier = 5;</code>
-     */
-    public com.google.protobuf.ByteString
-        getQualifierBytes() {
-      java.lang.Object ref = qualifier_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        qualifier_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int NAME_FIELD_NUMBER = 6;
-    private java.lang.Object name_;
-    /**
-     * <code>optional string name = 6;</code>
-     */
-    public boolean hasName() {
-      return ((bitField0_ & 0x00000020) == 0x00000020);
-    }
-    /**
-     * <code>optional string name = 6;</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 = 6;</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 LONGNAME_FIELD_NUMBER = 7;
-    private java.lang.Object longName_;
-    /**
-     * <code>optional string longName = 7;</code>
-     */
-    public boolean hasLongName() {
-      return ((bitField0_ & 0x00000040) == 0x00000040);
-    }
-    /**
-     * <code>optional string longName = 7;</code>
-     */
-    public java.lang.String getLongName() {
-      java.lang.Object ref = longName_;
-      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()) {
-          longName_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string longName = 7;</code>
-     */
-    public com.google.protobuf.ByteString
-        getLongNameBytes() {
-      java.lang.Object ref = longName_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        longName_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int PATH_FIELD_NUMBER = 8;
-    private java.lang.Object path_;
-    /**
-     * <code>optional string path = 8;</code>
-     */
-    public boolean hasPath() {
-      return ((bitField0_ & 0x00000080) == 0x00000080);
-    }
-    /**
-     * <code>optional string path = 8;</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 = 8;</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 PROJECTID_FIELD_NUMBER = 9;
-    private int projectId_;
-    /**
-     * <code>optional int32 projectId = 9;</code>
-     */
-    public boolean hasProjectId() {
-      return ((bitField0_ & 0x00000100) == 0x00000100);
-    }
-    /**
-     * <code>optional int32 projectId = 9;</code>
-     */
-    public int getProjectId() {
-      return projectId_;
-    }
-
-    public static final int SUBPROJECTID_FIELD_NUMBER = 10;
-    private int subProjectId_;
-    /**
-     * <code>optional int32 subProjectId = 10;</code>
-     */
-    public boolean hasSubProjectId() {
-      return ((bitField0_ & 0x00000200) == 0x00000200);
-    }
-    /**
-     * <code>optional int32 subProjectId = 10;</code>
-     */
-    public int getSubProjectId() {
-      return subProjectId_;
-    }
-
-    private void initFields() {
-      uuid_ = "";
-      key_ = "";
-      id_ = 0;
-      enabled_ = false;
-      qualifier_ = "";
-      name_ = "";
-      longName_ = "";
-      path_ = "";
-      projectId_ = 0;
-      subProjectId_ = 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.writeBytes(1, getUuidBytes());
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeBytes(2, getKeyBytes());
-      }
-      if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        output.writeInt32(3, id_);
-      }
-      if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        output.writeBool(4, enabled_);
-      }
-      if (((bitField0_ & 0x00000010) == 0x00000010)) {
-        output.writeBytes(5, getQualifierBytes());
-      }
-      if (((bitField0_ & 0x00000020) == 0x00000020)) {
-        output.writeBytes(6, getNameBytes());
-      }
-      if (((bitField0_ & 0x00000040) == 0x00000040)) {
-        output.writeBytes(7, getLongNameBytes());
-      }
-      if (((bitField0_ & 0x00000080) == 0x00000080)) {
-        output.writeBytes(8, getPathBytes());
-      }
-      if (((bitField0_ & 0x00000100) == 0x00000100)) {
-        output.writeInt32(9, projectId_);
-      }
-      if (((bitField0_ & 0x00000200) == 0x00000200)) {
-        output.writeInt32(10, subProjectId_);
-      }
-      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, getUuidBytes());
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(2, getKeyBytes());
-      }
-      if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(3, id_);
-      }
-      if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(4, enabled_);
-      }
-      if (((bitField0_ & 0x00000010) == 0x00000010)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(5, getQualifierBytes());
-      }
-      if (((bitField0_ & 0x00000020) == 0x00000020)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(6, getNameBytes());
-      }
-      if (((bitField0_ & 0x00000040) == 0x00000040)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(7, getLongNameBytes());
-      }
-      if (((bitField0_ & 0x00000080) == 0x00000080)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(8, getPathBytes());
-      }
-      if (((bitField0_ & 0x00000100) == 0x00000100)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(9, projectId_);
-      }
-      if (((bitField0_ & 0x00000200) == 0x00000200)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(10, subProjectId_);
-      }
-      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.sonarqube.ws.Common.Component parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonarqube.ws.Common.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.sonarqube.ws.Common.Component parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonarqube.ws.Common.Component parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.Component parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonarqube.ws.Common.Component parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.Component parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
-    }
-    public static org.sonarqube.ws.Common.Component parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.Component parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonarqube.ws.Common.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.sonarqube.ws.Common.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 sonarqube.ws.Component}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:sonarqube.ws.Component)
-        org.sonarqube.ws.Common.ComponentOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Component_descriptor;
-      }
-
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Component_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                org.sonarqube.ws.Common.Component.class, org.sonarqube.ws.Common.Component.Builder.class);
-      }
-
-      // Construct using org.sonarqube.ws.Common.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();
-        uuid_ = "";
-        bitField0_ = (bitField0_ & ~0x00000001);
-        key_ = "";
-        bitField0_ = (bitField0_ & ~0x00000002);
-        id_ = 0;
-        bitField0_ = (bitField0_ & ~0x00000004);
-        enabled_ = false;
-        bitField0_ = (bitField0_ & ~0x00000008);
-        qualifier_ = "";
-        bitField0_ = (bitField0_ & ~0x00000010);
-        name_ = "";
-        bitField0_ = (bitField0_ & ~0x00000020);
-        longName_ = "";
-        bitField0_ = (bitField0_ & ~0x00000040);
-        path_ = "";
-        bitField0_ = (bitField0_ & ~0x00000080);
-        projectId_ = 0;
-        bitField0_ = (bitField0_ & ~0x00000100);
-        subProjectId_ = 0;
-        bitField0_ = (bitField0_ & ~0x00000200);
-        return this;
-      }
-
-      public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Component_descriptor;
-      }
-
-      public org.sonarqube.ws.Common.Component getDefaultInstanceForType() {
-        return org.sonarqube.ws.Common.Component.getDefaultInstance();
-      }
-
-      public org.sonarqube.ws.Common.Component build() {
-        org.sonarqube.ws.Common.Component result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      public org.sonarqube.ws.Common.Component buildPartial() {
-        org.sonarqube.ws.Common.Component result = new org.sonarqube.ws.Common.Component(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.uuid_ = uuid_;
-        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.key_ = key_;
-        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
-          to_bitField0_ |= 0x00000004;
-        }
-        result.id_ = id_;
-        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
-          to_bitField0_ |= 0x00000008;
-        }
-        result.enabled_ = enabled_;
-        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
-          to_bitField0_ |= 0x00000010;
-        }
-        result.qualifier_ = qualifier_;
-        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
-          to_bitField0_ |= 0x00000020;
-        }
-        result.name_ = name_;
-        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
-          to_bitField0_ |= 0x00000040;
-        }
-        result.longName_ = longName_;
-        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
-          to_bitField0_ |= 0x00000080;
-        }
-        result.path_ = path_;
-        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
-          to_bitField0_ |= 0x00000100;
-        }
-        result.projectId_ = projectId_;
-        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
-          to_bitField0_ |= 0x00000200;
-        }
-        result.subProjectId_ = subProjectId_;
-        result.bitField0_ = to_bitField0_;
-        onBuilt();
-        return result;
-      }
-
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.sonarqube.ws.Common.Component) {
-          return mergeFrom((org.sonarqube.ws.Common.Component)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(org.sonarqube.ws.Common.Component other) {
-        if (other == org.sonarqube.ws.Common.Component.getDefaultInstance()) return this;
-        if (other.hasUuid()) {
-          bitField0_ |= 0x00000001;
-          uuid_ = other.uuid_;
-          onChanged();
-        }
-        if (other.hasKey()) {
-          bitField0_ |= 0x00000002;
-          key_ = other.key_;
-          onChanged();
-        }
-        if (other.hasId()) {
-          setId(other.getId());
-        }
-        if (other.hasEnabled()) {
-          setEnabled(other.getEnabled());
-        }
-        if (other.hasQualifier()) {
-          bitField0_ |= 0x00000010;
-          qualifier_ = other.qualifier_;
-          onChanged();
-        }
-        if (other.hasName()) {
-          bitField0_ |= 0x00000020;
-          name_ = other.name_;
-          onChanged();
-        }
-        if (other.hasLongName()) {
-          bitField0_ |= 0x00000040;
-          longName_ = other.longName_;
-          onChanged();
-        }
-        if (other.hasPath()) {
-          bitField0_ |= 0x00000080;
-          path_ = other.path_;
-          onChanged();
-        }
-        if (other.hasProjectId()) {
-          setProjectId(other.getProjectId());
-        }
-        if (other.hasSubProjectId()) {
-          setSubProjectId(other.getSubProjectId());
-        }
-        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.sonarqube.ws.Common.Component parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.sonarqube.ws.Common.Component) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.lang.Object uuid_ = "";
-      /**
-       * <code>optional string uuid = 1;</code>
-       */
-      public boolean hasUuid() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
-       * <code>optional string uuid = 1;</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 = 1;</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 = 1;</code>
-       */
-      public Builder setUuid(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        uuid_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string uuid = 1;</code>
-       */
-      public Builder clearUuid() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        uuid_ = getDefaultInstance().getUuid();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string uuid = 1;</code>
-       */
-      public Builder setUuidBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        uuid_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object key_ = "";
-      /**
-       * <code>optional string key = 2;</code>
-       */
-      public boolean hasKey() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
-      }
-      /**
-       * <code>optional string key = 2;</code>
-       */
-      public java.lang.String getKey() {
-        java.lang.Object ref = key_;
-        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()) {
-            key_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string key = 2;</code>
-       */
-      public com.google.protobuf.ByteString
-          getKeyBytes() {
-        java.lang.Object ref = key_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          key_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string key = 2;</code>
-       */
-      public Builder setKey(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        key_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string key = 2;</code>
-       */
-      public Builder clearKey() {
-        bitField0_ = (bitField0_ & ~0x00000002);
-        key_ = getDefaultInstance().getKey();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string key = 2;</code>
-       */
-      public Builder setKeyBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        key_ = value;
-        onChanged();
-        return this;
-      }
-
-      private int id_ ;
-      /**
-       * <code>optional int32 id = 3;</code>
-       */
-      public boolean hasId() {
-        return ((bitField0_ & 0x00000004) == 0x00000004);
-      }
-      /**
-       * <code>optional int32 id = 3;</code>
-       */
-      public int getId() {
-        return id_;
-      }
-      /**
-       * <code>optional int32 id = 3;</code>
-       */
-      public Builder setId(int value) {
-        bitField0_ |= 0x00000004;
-        id_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional int32 id = 3;</code>
-       */
-      public Builder clearId() {
-        bitField0_ = (bitField0_ & ~0x00000004);
-        id_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private boolean enabled_ ;
-      /**
-       * <code>optional bool enabled = 4;</code>
-       */
-      public boolean hasEnabled() {
-        return ((bitField0_ & 0x00000008) == 0x00000008);
-      }
-      /**
-       * <code>optional bool enabled = 4;</code>
-       */
-      public boolean getEnabled() {
-        return enabled_;
-      }
-      /**
-       * <code>optional bool enabled = 4;</code>
-       */
-      public Builder setEnabled(boolean value) {
-        bitField0_ |= 0x00000008;
-        enabled_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional bool enabled = 4;</code>
-       */
-      public Builder clearEnabled() {
-        bitField0_ = (bitField0_ & ~0x00000008);
-        enabled_ = false;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object qualifier_ = "";
-      /**
-       * <code>optional string qualifier = 5;</code>
-       */
-      public boolean hasQualifier() {
-        return ((bitField0_ & 0x00000010) == 0x00000010);
-      }
-      /**
-       * <code>optional string qualifier = 5;</code>
-       */
-      public java.lang.String getQualifier() {
-        java.lang.Object ref = qualifier_;
-        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()) {
-            qualifier_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string qualifier = 5;</code>
-       */
-      public com.google.protobuf.ByteString
-          getQualifierBytes() {
-        java.lang.Object ref = qualifier_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          qualifier_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string qualifier = 5;</code>
-       */
-      public Builder setQualifier(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000010;
-        qualifier_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string qualifier = 5;</code>
-       */
-      public Builder clearQualifier() {
-        bitField0_ = (bitField0_ & ~0x00000010);
-        qualifier_ = getDefaultInstance().getQualifier();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string qualifier = 5;</code>
-       */
-      public Builder setQualifierBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000010;
-        qualifier_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object name_ = "";
-      /**
-       * <code>optional string name = 6;</code>
-       */
-      public boolean hasName() {
-        return ((bitField0_ & 0x00000020) == 0x00000020);
-      }
-      /**
-       * <code>optional string name = 6;</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 = 6;</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 = 6;</code>
-       */
-      public Builder setName(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000020;
-        name_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string name = 6;</code>
-       */
-      public Builder clearName() {
-        bitField0_ = (bitField0_ & ~0x00000020);
-        name_ = getDefaultInstance().getName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string name = 6;</code>
-       */
-      public Builder setNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000020;
-        name_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object longName_ = "";
-      /**
-       * <code>optional string longName = 7;</code>
-       */
-      public boolean hasLongName() {
-        return ((bitField0_ & 0x00000040) == 0x00000040);
-      }
-      /**
-       * <code>optional string longName = 7;</code>
-       */
-      public java.lang.String getLongName() {
-        java.lang.Object ref = longName_;
-        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()) {
-            longName_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string longName = 7;</code>
-       */
-      public com.google.protobuf.ByteString
-          getLongNameBytes() {
-        java.lang.Object ref = longName_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          longName_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string longName = 7;</code>
-       */
-      public Builder setLongName(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000040;
-        longName_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string longName = 7;</code>
-       */
-      public Builder clearLongName() {
-        bitField0_ = (bitField0_ & ~0x00000040);
-        longName_ = getDefaultInstance().getLongName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string longName = 7;</code>
-       */
-      public Builder setLongNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000040;
-        longName_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object path_ = "";
-      /**
-       * <code>optional string path = 8;</code>
-       */
-      public boolean hasPath() {
-        return ((bitField0_ & 0x00000080) == 0x00000080);
-      }
-      /**
-       * <code>optional string path = 8;</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 = 8;</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 = 8;</code>
-       */
-      public Builder setPath(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000080;
-        path_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string path = 8;</code>
-       */
-      public Builder clearPath() {
-        bitField0_ = (bitField0_ & ~0x00000080);
-        path_ = getDefaultInstance().getPath();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string path = 8;</code>
-       */
-      public Builder setPathBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000080;
-        path_ = value;
-        onChanged();
-        return this;
-      }
-
-      private int projectId_ ;
-      /**
-       * <code>optional int32 projectId = 9;</code>
-       */
-      public boolean hasProjectId() {
-        return ((bitField0_ & 0x00000100) == 0x00000100);
-      }
-      /**
-       * <code>optional int32 projectId = 9;</code>
-       */
-      public int getProjectId() {
-        return projectId_;
-      }
-      /**
-       * <code>optional int32 projectId = 9;</code>
-       */
-      public Builder setProjectId(int value) {
-        bitField0_ |= 0x00000100;
-        projectId_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional int32 projectId = 9;</code>
-       */
-      public Builder clearProjectId() {
-        bitField0_ = (bitField0_ & ~0x00000100);
-        projectId_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private int subProjectId_ ;
-      /**
-       * <code>optional int32 subProjectId = 10;</code>
-       */
-      public boolean hasSubProjectId() {
-        return ((bitField0_ & 0x00000200) == 0x00000200);
-      }
-      /**
-       * <code>optional int32 subProjectId = 10;</code>
-       */
-      public int getSubProjectId() {
-        return subProjectId_;
-      }
-      /**
-       * <code>optional int32 subProjectId = 10;</code>
-       */
-      public Builder setSubProjectId(int value) {
-        bitField0_ |= 0x00000200;
-        subProjectId_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional int32 subProjectId = 10;</code>
-       */
-      public Builder clearSubProjectId() {
-        bitField0_ = (bitField0_ & ~0x00000200);
-        subProjectId_ = 0;
-        onChanged();
-        return this;
-      }
-
-      // @@protoc_insertion_point(builder_scope:sonarqube.ws.Component)
-    }
-
-    static {
-      defaultInstance = new Component(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:sonarqube.ws.Component)
-  }
-
-  public interface RuleOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:sonarqube.ws.Rule)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>optional string key = 1;</code>
-     */
-    boolean hasKey();
-    /**
-     * <code>optional string key = 1;</code>
-     */
-    java.lang.String getKey();
-    /**
-     * <code>optional string key = 1;</code>
-     */
-    com.google.protobuf.ByteString
-        getKeyBytes();
-
-    /**
-     * <code>optional string name = 2;</code>
-     */
-    boolean hasName();
-    /**
-     * <code>optional string name = 2;</code>
-     */
-    java.lang.String getName();
-    /**
-     * <code>optional string name = 2;</code>
-     */
-    com.google.protobuf.ByteString
-        getNameBytes();
-
-    /**
-     * <code>optional string lang = 3;</code>
-     */
-    boolean hasLang();
-    /**
-     * <code>optional string lang = 3;</code>
-     */
-    java.lang.String getLang();
-    /**
-     * <code>optional string lang = 3;</code>
-     */
-    com.google.protobuf.ByteString
-        getLangBytes();
-
-    /**
-     * <code>optional string desc = 4;</code>
-     *
-     * <pre>
-     * TODO what's the format ?
-     * </pre>
-     */
-    boolean hasDesc();
-    /**
-     * <code>optional string desc = 4;</code>
-     *
-     * <pre>
-     * TODO what's the format ?
-     * </pre>
-     */
-    java.lang.String getDesc();
-    /**
-     * <code>optional string desc = 4;</code>
-     *
-     * <pre>
-     * TODO what's the format ?
-     * </pre>
-     */
-    com.google.protobuf.ByteString
-        getDescBytes();
-
-    /**
-     * <code>optional .sonarqube.ws.RuleStatus status = 5;</code>
-     */
-    boolean hasStatus();
-    /**
-     * <code>optional .sonarqube.ws.RuleStatus status = 5;</code>
-     */
-    org.sonarqube.ws.Common.RuleStatus getStatus();
-
-    /**
-     * <code>optional string langName = 6;</code>
-     *
-     * <pre>
-     * TODO missing 'lang'
-     * </pre>
-     */
-    boolean hasLangName();
-    /**
-     * <code>optional string langName = 6;</code>
-     *
-     * <pre>
-     * TODO missing 'lang'
-     * </pre>
-     */
-    java.lang.String getLangName();
-    /**
-     * <code>optional string langName = 6;</code>
-     *
-     * <pre>
-     * TODO missing 'lang'
-     * </pre>
-     */
-    com.google.protobuf.ByteString
-        getLangNameBytes();
-  }
-  /**
-   * Protobuf type {@code sonarqube.ws.Rule}
-   */
-  public static final class Rule extends
-      com.google.protobuf.GeneratedMessage implements
-      // @@protoc_insertion_point(message_implements:sonarqube.ws.Rule)
-      RuleOrBuilder {
-    // Use Rule.newBuilder() to construct.
-    private Rule(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private Rule(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final Rule defaultInstance;
-    public static Rule getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    public Rule getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Rule(
-        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;
-              key_ = bs;
-              break;
-            }
-            case 18: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000002;
-              name_ = bs;
-              break;
-            }
-            case 26: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000004;
-              lang_ = bs;
-              break;
-            }
-            case 34: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000008;
-              desc_ = bs;
-              break;
-            }
-            case 40: {
-              int rawValue = input.readEnum();
-              org.sonarqube.ws.Common.RuleStatus value = org.sonarqube.ws.Common.RuleStatus.valueOf(rawValue);
-              if (value == null) {
-                unknownFields.mergeVarintField(5, rawValue);
-              } else {
-                bitField0_ |= 0x00000010;
-                status_ = value;
-              }
-              break;
-            }
-            case 50: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000020;
-              langName_ = 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 {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Rule_descriptor;
-    }
-
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Rule_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              org.sonarqube.ws.Common.Rule.class, org.sonarqube.ws.Common.Rule.Builder.class);
-    }
-
-    public static com.google.protobuf.Parser<Rule> PARSER =
-        new com.google.protobuf.AbstractParser<Rule>() {
-      public Rule parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Rule(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<Rule> getParserForType() {
-      return PARSER;
-    }
-
-    private int bitField0_;
-    public static final int KEY_FIELD_NUMBER = 1;
-    private java.lang.Object key_;
-    /**
-     * <code>optional string key = 1;</code>
-     */
-    public boolean hasKey() {
-      return ((bitField0_ & 0x00000001) == 0x00000001);
-    }
-    /**
-     * <code>optional string key = 1;</code>
-     */
-    public java.lang.String getKey() {
-      java.lang.Object ref = key_;
-      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()) {
-          key_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string key = 1;</code>
-     */
-    public com.google.protobuf.ByteString
-        getKeyBytes() {
-      java.lang.Object ref = key_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        key_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int NAME_FIELD_NUMBER = 2;
-    private java.lang.Object name_;
-    /**
-     * <code>optional string name = 2;</code>
-     */
-    public boolean hasName() {
-      return ((bitField0_ & 0x00000002) == 0x00000002);
-    }
-    /**
-     * <code>optional string name = 2;</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 = 2;</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 LANG_FIELD_NUMBER = 3;
-    private java.lang.Object lang_;
-    /**
-     * <code>optional string lang = 3;</code>
-     */
-    public boolean hasLang() {
-      return ((bitField0_ & 0x00000004) == 0x00000004);
-    }
-    /**
-     * <code>optional string lang = 3;</code>
-     */
-    public java.lang.String getLang() {
-      java.lang.Object ref = lang_;
-      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()) {
-          lang_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string lang = 3;</code>
-     */
-    public com.google.protobuf.ByteString
-        getLangBytes() {
-      java.lang.Object ref = lang_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        lang_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int DESC_FIELD_NUMBER = 4;
-    private java.lang.Object desc_;
-    /**
-     * <code>optional string desc = 4;</code>
-     *
-     * <pre>
-     * TODO what's the format ?
-     * </pre>
-     */
-    public boolean hasDesc() {
-      return ((bitField0_ & 0x00000008) == 0x00000008);
-    }
-    /**
-     * <code>optional string desc = 4;</code>
-     *
-     * <pre>
-     * TODO what's the format ?
-     * </pre>
-     */
-    public java.lang.String getDesc() {
-      java.lang.Object ref = desc_;
-      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()) {
-          desc_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string desc = 4;</code>
-     *
-     * <pre>
-     * TODO what's the format ?
-     * </pre>
-     */
-    public com.google.protobuf.ByteString
-        getDescBytes() {
-      java.lang.Object ref = desc_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        desc_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int STATUS_FIELD_NUMBER = 5;
-    private org.sonarqube.ws.Common.RuleStatus status_;
-    /**
-     * <code>optional .sonarqube.ws.RuleStatus status = 5;</code>
-     */
-    public boolean hasStatus() {
-      return ((bitField0_ & 0x00000010) == 0x00000010);
-    }
-    /**
-     * <code>optional .sonarqube.ws.RuleStatus status = 5;</code>
-     */
-    public org.sonarqube.ws.Common.RuleStatus getStatus() {
-      return status_;
-    }
-
-    public static final int LANGNAME_FIELD_NUMBER = 6;
-    private java.lang.Object langName_;
-    /**
-     * <code>optional string langName = 6;</code>
-     *
-     * <pre>
-     * TODO missing 'lang'
-     * </pre>
-     */
-    public boolean hasLangName() {
-      return ((bitField0_ & 0x00000020) == 0x00000020);
-    }
-    /**
-     * <code>optional string langName = 6;</code>
-     *
-     * <pre>
-     * TODO missing 'lang'
-     * </pre>
-     */
-    public java.lang.String getLangName() {
-      java.lang.Object ref = langName_;
-      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()) {
-          langName_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string langName = 6;</code>
-     *
-     * <pre>
-     * TODO missing 'lang'
-     * </pre>
-     */
-    public com.google.protobuf.ByteString
-        getLangNameBytes() {
-      java.lang.Object ref = langName_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        langName_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    private void initFields() {
-      key_ = "";
-      name_ = "";
-      lang_ = "";
-      desc_ = "";
-      status_ = org.sonarqube.ws.Common.RuleStatus.BETA;
-      langName_ = "";
-    }
-    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, getKeyBytes());
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeBytes(2, getNameBytes());
-      }
-      if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        output.writeBytes(3, getLangBytes());
-      }
-      if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        output.writeBytes(4, getDescBytes());
-      }
-      if (((bitField0_ & 0x00000010) == 0x00000010)) {
-        output.writeEnum(5, status_.getNumber());
-      }
-      if (((bitField0_ & 0x00000020) == 0x00000020)) {
-        output.writeBytes(6, getLangNameBytes());
-      }
-      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, getKeyBytes());
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(2, getNameBytes());
-      }
-      if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(3, getLangBytes());
-      }
-      if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(4, getDescBytes());
-      }
-      if (((bitField0_ & 0x00000010) == 0x00000010)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(5, status_.getNumber());
-      }
-      if (((bitField0_ & 0x00000020) == 0x00000020)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(6, getLangNameBytes());
-      }
-      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.sonarqube.ws.Common.Rule parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonarqube.ws.Common.Rule parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.Rule parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonarqube.ws.Common.Rule parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.Rule parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonarqube.ws.Common.Rule parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.Rule parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
-    }
-    public static org.sonarqube.ws.Common.Rule parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.Rule parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonarqube.ws.Common.Rule 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.sonarqube.ws.Common.Rule 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 sonarqube.ws.Rule}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:sonarqube.ws.Rule)
-        org.sonarqube.ws.Common.RuleOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Rule_descriptor;
-      }
-
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Rule_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                org.sonarqube.ws.Common.Rule.class, org.sonarqube.ws.Common.Rule.Builder.class);
-      }
-
-      // Construct using org.sonarqube.ws.Common.Rule.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();
-        key_ = "";
-        bitField0_ = (bitField0_ & ~0x00000001);
-        name_ = "";
-        bitField0_ = (bitField0_ & ~0x00000002);
-        lang_ = "";
-        bitField0_ = (bitField0_ & ~0x00000004);
-        desc_ = "";
-        bitField0_ = (bitField0_ & ~0x00000008);
-        status_ = org.sonarqube.ws.Common.RuleStatus.BETA;
-        bitField0_ = (bitField0_ & ~0x00000010);
-        langName_ = "";
-        bitField0_ = (bitField0_ & ~0x00000020);
-        return this;
-      }
-
-      public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Rule_descriptor;
-      }
-
-      public org.sonarqube.ws.Common.Rule getDefaultInstanceForType() {
-        return org.sonarqube.ws.Common.Rule.getDefaultInstance();
-      }
-
-      public org.sonarqube.ws.Common.Rule build() {
-        org.sonarqube.ws.Common.Rule result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      public org.sonarqube.ws.Common.Rule buildPartial() {
-        org.sonarqube.ws.Common.Rule result = new org.sonarqube.ws.Common.Rule(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.key_ = key_;
-        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.name_ = name_;
-        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
-          to_bitField0_ |= 0x00000004;
-        }
-        result.lang_ = lang_;
-        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
-          to_bitField0_ |= 0x00000008;
-        }
-        result.desc_ = desc_;
-        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
-          to_bitField0_ |= 0x00000010;
-        }
-        result.status_ = status_;
-        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
-          to_bitField0_ |= 0x00000020;
-        }
-        result.langName_ = langName_;
-        result.bitField0_ = to_bitField0_;
-        onBuilt();
-        return result;
-      }
-
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.sonarqube.ws.Common.Rule) {
-          return mergeFrom((org.sonarqube.ws.Common.Rule)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(org.sonarqube.ws.Common.Rule other) {
-        if (other == org.sonarqube.ws.Common.Rule.getDefaultInstance()) return this;
-        if (other.hasKey()) {
-          bitField0_ |= 0x00000001;
-          key_ = other.key_;
-          onChanged();
-        }
-        if (other.hasName()) {
-          bitField0_ |= 0x00000002;
-          name_ = other.name_;
-          onChanged();
-        }
-        if (other.hasLang()) {
-          bitField0_ |= 0x00000004;
-          lang_ = other.lang_;
-          onChanged();
-        }
-        if (other.hasDesc()) {
-          bitField0_ |= 0x00000008;
-          desc_ = other.desc_;
-          onChanged();
-        }
-        if (other.hasStatus()) {
-          setStatus(other.getStatus());
-        }
-        if (other.hasLangName()) {
-          bitField0_ |= 0x00000020;
-          langName_ = other.langName_;
-          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.sonarqube.ws.Common.Rule parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.sonarqube.ws.Common.Rule) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.lang.Object key_ = "";
-      /**
-       * <code>optional string key = 1;</code>
-       */
-      public boolean hasKey() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
-       * <code>optional string key = 1;</code>
-       */
-      public java.lang.String getKey() {
-        java.lang.Object ref = key_;
-        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()) {
-            key_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string key = 1;</code>
-       */
-      public com.google.protobuf.ByteString
-          getKeyBytes() {
-        java.lang.Object ref = key_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          key_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string key = 1;</code>
-       */
-      public Builder setKey(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        key_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string key = 1;</code>
-       */
-      public Builder clearKey() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        key_ = getDefaultInstance().getKey();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string key = 1;</code>
-       */
-      public Builder setKeyBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        key_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object name_ = "";
-      /**
-       * <code>optional string name = 2;</code>
-       */
-      public boolean hasName() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
-      }
-      /**
-       * <code>optional string name = 2;</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 = 2;</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 = 2;</code>
-       */
-      public Builder setName(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        name_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string name = 2;</code>
-       */
-      public Builder clearName() {
-        bitField0_ = (bitField0_ & ~0x00000002);
-        name_ = getDefaultInstance().getName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string name = 2;</code>
-       */
-      public Builder setNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        name_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object lang_ = "";
-      /**
-       * <code>optional string lang = 3;</code>
-       */
-      public boolean hasLang() {
-        return ((bitField0_ & 0x00000004) == 0x00000004);
-      }
-      /**
-       * <code>optional string lang = 3;</code>
-       */
-      public java.lang.String getLang() {
-        java.lang.Object ref = lang_;
-        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()) {
-            lang_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string lang = 3;</code>
-       */
-      public com.google.protobuf.ByteString
-          getLangBytes() {
-        java.lang.Object ref = lang_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          lang_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string lang = 3;</code>
-       */
-      public Builder setLang(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000004;
-        lang_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string lang = 3;</code>
-       */
-      public Builder clearLang() {
-        bitField0_ = (bitField0_ & ~0x00000004);
-        lang_ = getDefaultInstance().getLang();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string lang = 3;</code>
-       */
-      public Builder setLangBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000004;
-        lang_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object desc_ = "";
-      /**
-       * <code>optional string desc = 4;</code>
-       *
-       * <pre>
-       * TODO what's the format ?
-       * </pre>
-       */
-      public boolean hasDesc() {
-        return ((bitField0_ & 0x00000008) == 0x00000008);
-      }
-      /**
-       * <code>optional string desc = 4;</code>
-       *
-       * <pre>
-       * TODO what's the format ?
-       * </pre>
-       */
-      public java.lang.String getDesc() {
-        java.lang.Object ref = desc_;
-        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()) {
-            desc_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string desc = 4;</code>
-       *
-       * <pre>
-       * TODO what's the format ?
-       * </pre>
-       */
-      public com.google.protobuf.ByteString
-          getDescBytes() {
-        java.lang.Object ref = desc_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          desc_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string desc = 4;</code>
-       *
-       * <pre>
-       * TODO what's the format ?
-       * </pre>
-       */
-      public Builder setDesc(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000008;
-        desc_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string desc = 4;</code>
-       *
-       * <pre>
-       * TODO what's the format ?
-       * </pre>
-       */
-      public Builder clearDesc() {
-        bitField0_ = (bitField0_ & ~0x00000008);
-        desc_ = getDefaultInstance().getDesc();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string desc = 4;</code>
-       *
-       * <pre>
-       * TODO what's the format ?
-       * </pre>
-       */
-      public Builder setDescBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000008;
-        desc_ = value;
-        onChanged();
-        return this;
-      }
-
-      private org.sonarqube.ws.Common.RuleStatus status_ = org.sonarqube.ws.Common.RuleStatus.BETA;
-      /**
-       * <code>optional .sonarqube.ws.RuleStatus status = 5;</code>
-       */
-      public boolean hasStatus() {
-        return ((bitField0_ & 0x00000010) == 0x00000010);
-      }
-      /**
-       * <code>optional .sonarqube.ws.RuleStatus status = 5;</code>
-       */
-      public org.sonarqube.ws.Common.RuleStatus getStatus() {
-        return status_;
-      }
-      /**
-       * <code>optional .sonarqube.ws.RuleStatus status = 5;</code>
-       */
-      public Builder setStatus(org.sonarqube.ws.Common.RuleStatus value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        bitField0_ |= 0x00000010;
-        status_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional .sonarqube.ws.RuleStatus status = 5;</code>
-       */
-      public Builder clearStatus() {
-        bitField0_ = (bitField0_ & ~0x00000010);
-        status_ = org.sonarqube.ws.Common.RuleStatus.BETA;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object langName_ = "";
-      /**
-       * <code>optional string langName = 6;</code>
-       *
-       * <pre>
-       * TODO missing 'lang'
-       * </pre>
-       */
-      public boolean hasLangName() {
-        return ((bitField0_ & 0x00000020) == 0x00000020);
-      }
-      /**
-       * <code>optional string langName = 6;</code>
-       *
-       * <pre>
-       * TODO missing 'lang'
-       * </pre>
-       */
-      public java.lang.String getLangName() {
-        java.lang.Object ref = langName_;
-        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()) {
-            langName_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string langName = 6;</code>
-       *
-       * <pre>
-       * TODO missing 'lang'
-       * </pre>
-       */
-      public com.google.protobuf.ByteString
-          getLangNameBytes() {
-        java.lang.Object ref = langName_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          langName_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string langName = 6;</code>
-       *
-       * <pre>
-       * TODO missing 'lang'
-       * </pre>
-       */
-      public Builder setLangName(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000020;
-        langName_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string langName = 6;</code>
-       *
-       * <pre>
-       * TODO missing 'lang'
-       * </pre>
-       */
-      public Builder clearLangName() {
-        bitField0_ = (bitField0_ & ~0x00000020);
-        langName_ = getDefaultInstance().getLangName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string langName = 6;</code>
-       *
-       * <pre>
-       * TODO missing 'lang'
-       * </pre>
-       */
-      public Builder setLangNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000020;
-        langName_ = value;
-        onChanged();
-        return this;
-      }
-
-      // @@protoc_insertion_point(builder_scope:sonarqube.ws.Rule)
-    }
-
-    static {
-      defaultInstance = new Rule(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:sonarqube.ws.Rule)
-  }
-
-  public interface UserOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:sonarqube.ws.User)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>optional string login = 1;</code>
-     */
-    boolean hasLogin();
-    /**
-     * <code>optional string login = 1;</code>
-     */
-    java.lang.String getLogin();
-    /**
-     * <code>optional string login = 1;</code>
-     */
-    com.google.protobuf.ByteString
-        getLoginBytes();
-
-    /**
-     * <code>optional string name = 2;</code>
-     */
-    boolean hasName();
-    /**
-     * <code>optional string name = 2;</code>
-     */
-    java.lang.String getName();
-    /**
-     * <code>optional string name = 2;</code>
-     */
-    com.google.protobuf.ByteString
-        getNameBytes();
-
-    /**
-     * <code>optional string email = 3;</code>
-     */
-    boolean hasEmail();
-    /**
-     * <code>optional string email = 3;</code>
-     */
-    java.lang.String getEmail();
-    /**
-     * <code>optional string email = 3;</code>
-     */
-    com.google.protobuf.ByteString
-        getEmailBytes();
-
-    /**
-     * <code>optional bool active = 4;</code>
-     */
-    boolean hasActive();
-    /**
-     * <code>optional bool active = 4;</code>
-     */
-    boolean getActive();
-  }
-  /**
-   * Protobuf type {@code sonarqube.ws.User}
-   */
-  public static final class User extends
-      com.google.protobuf.GeneratedMessage implements
-      // @@protoc_insertion_point(message_implements:sonarqube.ws.User)
-      UserOrBuilder {
-    // Use User.newBuilder() to construct.
-    private User(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private User(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final User defaultInstance;
-    public static User getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    public User getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
-      return this.unknownFields;
-    }
-    private User(
-        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;
-              login_ = bs;
-              break;
-            }
-            case 18: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000002;
-              name_ = bs;
-              break;
-            }
-            case 26: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000004;
-              email_ = bs;
-              break;
-            }
-            case 32: {
-              bitField0_ |= 0x00000008;
-              active_ = 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 {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return org.sonarqube.ws.Common.internal_static_sonarqube_ws_User_descriptor;
-    }
-
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return org.sonarqube.ws.Common.internal_static_sonarqube_ws_User_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              org.sonarqube.ws.Common.User.class, org.sonarqube.ws.Common.User.Builder.class);
-    }
-
-    public static com.google.protobuf.Parser<User> PARSER =
-        new com.google.protobuf.AbstractParser<User>() {
-      public User parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new User(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<User> getParserForType() {
-      return PARSER;
-    }
-
-    private int bitField0_;
-    public static final int LOGIN_FIELD_NUMBER = 1;
-    private java.lang.Object login_;
-    /**
-     * <code>optional string login = 1;</code>
-     */
-    public boolean hasLogin() {
-      return ((bitField0_ & 0x00000001) == 0x00000001);
-    }
-    /**
-     * <code>optional string login = 1;</code>
-     */
-    public java.lang.String getLogin() {
-      java.lang.Object ref = login_;
-      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()) {
-          login_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string login = 1;</code>
-     */
-    public com.google.protobuf.ByteString
-        getLoginBytes() {
-      java.lang.Object ref = login_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        login_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int NAME_FIELD_NUMBER = 2;
-    private java.lang.Object name_;
-    /**
-     * <code>optional string name = 2;</code>
-     */
-    public boolean hasName() {
-      return ((bitField0_ & 0x00000002) == 0x00000002);
-    }
-    /**
-     * <code>optional string name = 2;</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 = 2;</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 EMAIL_FIELD_NUMBER = 3;
-    private java.lang.Object email_;
-    /**
-     * <code>optional string email = 3;</code>
-     */
-    public boolean hasEmail() {
-      return ((bitField0_ & 0x00000004) == 0x00000004);
-    }
-    /**
-     * <code>optional string email = 3;</code>
-     */
-    public java.lang.String getEmail() {
-      java.lang.Object ref = email_;
-      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()) {
-          email_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string email = 3;</code>
-     */
-    public com.google.protobuf.ByteString
-        getEmailBytes() {
-      java.lang.Object ref = email_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        email_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int ACTIVE_FIELD_NUMBER = 4;
-    private boolean active_;
-    /**
-     * <code>optional bool active = 4;</code>
-     */
-    public boolean hasActive() {
-      return ((bitField0_ & 0x00000008) == 0x00000008);
-    }
-    /**
-     * <code>optional bool active = 4;</code>
-     */
-    public boolean getActive() {
-      return active_;
-    }
-
-    private void initFields() {
-      login_ = "";
-      name_ = "";
-      email_ = "";
-      active_ = 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, getLoginBytes());
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeBytes(2, getNameBytes());
-      }
-      if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        output.writeBytes(3, getEmailBytes());
-      }
-      if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        output.writeBool(4, active_);
-      }
-      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, getLoginBytes());
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(2, getNameBytes());
-      }
-      if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(3, getEmailBytes());
-      }
-      if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(4, active_);
-      }
-      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.sonarqube.ws.Common.User parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonarqube.ws.Common.User parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.User parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonarqube.ws.Common.User parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.User parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonarqube.ws.Common.User parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.User parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
-    }
-    public static org.sonarqube.ws.Common.User parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Common.User parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonarqube.ws.Common.User 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.sonarqube.ws.Common.User 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 sonarqube.ws.User}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:sonarqube.ws.User)
-        org.sonarqube.ws.Common.UserOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_User_descriptor;
-      }
-
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_User_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                org.sonarqube.ws.Common.User.class, org.sonarqube.ws.Common.User.Builder.class);
-      }
-
-      // Construct using org.sonarqube.ws.Common.User.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();
-        login_ = "";
-        bitField0_ = (bitField0_ & ~0x00000001);
-        name_ = "";
-        bitField0_ = (bitField0_ & ~0x00000002);
-        email_ = "";
-        bitField0_ = (bitField0_ & ~0x00000004);
-        active_ = false;
-        bitField0_ = (bitField0_ & ~0x00000008);
-        return this;
-      }
-
-      public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_User_descriptor;
-      }
-
-      public org.sonarqube.ws.Common.User getDefaultInstanceForType() {
-        return org.sonarqube.ws.Common.User.getDefaultInstance();
-      }
-
-      public org.sonarqube.ws.Common.User build() {
-        org.sonarqube.ws.Common.User result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      public org.sonarqube.ws.Common.User buildPartial() {
-        org.sonarqube.ws.Common.User result = new org.sonarqube.ws.Common.User(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.login_ = login_;
-        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.name_ = name_;
-        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
-          to_bitField0_ |= 0x00000004;
-        }
-        result.email_ = email_;
-        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
-          to_bitField0_ |= 0x00000008;
-        }
-        result.active_ = active_;
-        result.bitField0_ = to_bitField0_;
-        onBuilt();
-        return result;
-      }
-
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.sonarqube.ws.Common.User) {
-          return mergeFrom((org.sonarqube.ws.Common.User)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(org.sonarqube.ws.Common.User other) {
-        if (other == org.sonarqube.ws.Common.User.getDefaultInstance()) return this;
-        if (other.hasLogin()) {
-          bitField0_ |= 0x00000001;
-          login_ = other.login_;
-          onChanged();
-        }
-        if (other.hasName()) {
-          bitField0_ |= 0x00000002;
-          name_ = other.name_;
-          onChanged();
-        }
-        if (other.hasEmail()) {
-          bitField0_ |= 0x00000004;
-          email_ = other.email_;
-          onChanged();
-        }
-        if (other.hasActive()) {
-          setActive(other.getActive());
-        }
-        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.sonarqube.ws.Common.User parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.sonarqube.ws.Common.User) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.lang.Object login_ = "";
-      /**
-       * <code>optional string login = 1;</code>
-       */
-      public boolean hasLogin() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
-       * <code>optional string login = 1;</code>
-       */
-      public java.lang.String getLogin() {
-        java.lang.Object ref = login_;
-        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()) {
-            login_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string login = 1;</code>
-       */
-      public com.google.protobuf.ByteString
-          getLoginBytes() {
-        java.lang.Object ref = login_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          login_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string login = 1;</code>
-       */
-      public Builder setLogin(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        login_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string login = 1;</code>
-       */
-      public Builder clearLogin() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        login_ = getDefaultInstance().getLogin();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string login = 1;</code>
-       */
-      public Builder setLoginBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        login_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object name_ = "";
-      /**
-       * <code>optional string name = 2;</code>
-       */
-      public boolean hasName() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
-      }
-      /**
-       * <code>optional string name = 2;</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 = 2;</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 = 2;</code>
-       */
-      public Builder setName(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        name_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string name = 2;</code>
-       */
-      public Builder clearName() {
-        bitField0_ = (bitField0_ & ~0x00000002);
-        name_ = getDefaultInstance().getName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string name = 2;</code>
-       */
-      public Builder setNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        name_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object email_ = "";
-      /**
-       * <code>optional string email = 3;</code>
-       */
-      public boolean hasEmail() {
-        return ((bitField0_ & 0x00000004) == 0x00000004);
-      }
-      /**
-       * <code>optional string email = 3;</code>
-       */
-      public java.lang.String getEmail() {
-        java.lang.Object ref = email_;
-        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()) {
-            email_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string email = 3;</code>
-       */
-      public com.google.protobuf.ByteString
-          getEmailBytes() {
-        java.lang.Object ref = email_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          email_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string email = 3;</code>
-       */
-      public Builder setEmail(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000004;
-        email_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string email = 3;</code>
-       */
-      public Builder clearEmail() {
-        bitField0_ = (bitField0_ & ~0x00000004);
-        email_ = getDefaultInstance().getEmail();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string email = 3;</code>
-       */
-      public Builder setEmailBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000004;
-        email_ = value;
-        onChanged();
-        return this;
-      }
-
-      private boolean active_ ;
-      /**
-       * <code>optional bool active = 4;</code>
-       */
-      public boolean hasActive() {
-        return ((bitField0_ & 0x00000008) == 0x00000008);
-      }
-      /**
-       * <code>optional bool active = 4;</code>
-       */
-      public boolean getActive() {
-        return active_;
-      }
-      /**
-       * <code>optional bool active = 4;</code>
-       */
-      public Builder setActive(boolean value) {
-        bitField0_ |= 0x00000008;
-        active_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional bool active = 4;</code>
-       */
-      public Builder clearActive() {
-        bitField0_ = (bitField0_ & ~0x00000008);
-        active_ = false;
-        onChanged();
-        return this;
-      }
-
-      // @@protoc_insertion_point(builder_scope:sonarqube.ws.User)
-    }
-
-    static {
-      defaultInstance = new User(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:sonarqube.ws.User)
-  }
-
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_sonarqube_ws_Paging_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
-      internal_static_sonarqube_ws_Paging_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_sonarqube_ws_Facet_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
-      internal_static_sonarqube_ws_Facet_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_sonarqube_ws_FacetValue_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
-      internal_static_sonarqube_ws_FacetValue_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_sonarqube_ws_Component_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
-      internal_static_sonarqube_ws_Component_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_sonarqube_ws_Rule_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
-      internal_static_sonarqube_ws_Rule_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_sonarqube_ws_User_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
-      internal_static_sonarqube_ws_User_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\017ws-common.proto\022\014sonarqube.ws\"M\n\006Pagin" +
-      "g\022\022\n\npage_index\030\001 \001(\005\022\021\n\tpage_size\030\002 \001(\005" +
-      "\022\r\n\005total\030\003 \001(\005\022\r\n\005pages\030\004 \001(\005\"C\n\005Facet\022" +
-      "\020\n\010property\030\001 \001(\t\022(\n\006values\030\002 \003(\0132\030.sona" +
-      "rqube.ws.FacetValue\"(\n\nFacetValue\022\013\n\003val" +
-      "\030\001 \001(\t\022\r\n\005count\030\002 \001(\003\"\255\001\n\tComponent\022\014\n\004u" +
-      "uid\030\001 \001(\t\022\013\n\003key\030\002 \001(\t\022\n\n\002id\030\003 \001(\005\022\017\n\007en" +
-      "abled\030\004 \001(\010\022\021\n\tqualifier\030\005 \001(\t\022\014\n\004name\030\006" +
-      " \001(\t\022\020\n\010longName\030\007 \001(\t\022\014\n\004path\030\010 \001(\t\022\021\n\t" +
-      "projectId\030\t \001(\005\022\024\n\014subProjectId\030\n \001(\005\"y\n",
-      "\004Rule\022\013\n\003key\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\022\014\n\004lang" +
-      "\030\003 \001(\t\022\014\n\004desc\030\004 \001(\t\022(\n\006status\030\005 \001(\0162\030.s" +
-      "onarqube.ws.RuleStatus\022\020\n\010langName\030\006 \001(\t" +
-      "\"B\n\004User\022\r\n\005login\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\022\r\n" +
-      "\005email\030\003 \001(\t\022\016\n\006active\030\004 \001(\010*>\n\nRuleStat" +
-      "us\022\010\n\004BETA\020\000\022\016\n\nDEPRECATED\020\001\022\t\n\005READY\020\002\022" +
-      "\013\n\007REMOVED\020\003B\034\n\020org.sonarqube.wsB\006Common" +
-      "H\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[] {
-        }, assigner);
-    internal_static_sonarqube_ws_Paging_descriptor =
-      getDescriptor().getMessageTypes().get(0);
-    internal_static_sonarqube_ws_Paging_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-        internal_static_sonarqube_ws_Paging_descriptor,
-        new java.lang.String[] { "PageIndex", "PageSize", "Total", "Pages", });
-    internal_static_sonarqube_ws_Facet_descriptor =
-      getDescriptor().getMessageTypes().get(1);
-    internal_static_sonarqube_ws_Facet_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-        internal_static_sonarqube_ws_Facet_descriptor,
-        new java.lang.String[] { "Property", "Values", });
-    internal_static_sonarqube_ws_FacetValue_descriptor =
-      getDescriptor().getMessageTypes().get(2);
-    internal_static_sonarqube_ws_FacetValue_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-        internal_static_sonarqube_ws_FacetValue_descriptor,
-        new java.lang.String[] { "Val", "Count", });
-    internal_static_sonarqube_ws_Component_descriptor =
-      getDescriptor().getMessageTypes().get(3);
-    internal_static_sonarqube_ws_Component_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-        internal_static_sonarqube_ws_Component_descriptor,
-        new java.lang.String[] { "Uuid", "Key", "Id", "Enabled", "Qualifier", "Name", "LongName", "Path", "ProjectId", "SubProjectId", });
-    internal_static_sonarqube_ws_Rule_descriptor =
-      getDescriptor().getMessageTypes().get(4);
-    internal_static_sonarqube_ws_Rule_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-        internal_static_sonarqube_ws_Rule_descriptor,
-        new java.lang.String[] { "Key", "Name", "Lang", "Desc", "Status", "LangName", });
-    internal_static_sonarqube_ws_User_descriptor =
-      getDescriptor().getMessageTypes().get(5);
-    internal_static_sonarqube_ws_User_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-        internal_static_sonarqube_ws_User_descriptor,
-        new java.lang.String[] { "Login", "Name", "Email", "Active", });
-  }
-
-  // @@protoc_insertion_point(outer_class_scope)
-}
diff --git a/server/sonar-server/src/main/gen-java/org/sonarqube/ws/Issues.java b/server/sonar-server/src/main/gen-java/org/sonarqube/ws/Issues.java
deleted file mode 100644 (file)
index fe73098..0000000
+++ /dev/null
@@ -1,8696 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: ws-issues.proto
-
-package org.sonarqube.ws;
-
-public final class Issues {
-  private Issues() {}
-  public static void registerAllExtensions(
-      com.google.protobuf.ExtensionRegistry registry) {
-  }
-  public interface SearchOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:sonarqube.ws.issues.Search)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>optional .sonarqube.ws.Paging paging = 1;</code>
-     *
-     * <pre>
-     * TODO errors
-     * </pre>
-     */
-    boolean hasPaging();
-    /**
-     * <code>optional .sonarqube.ws.Paging paging = 1;</code>
-     *
-     * <pre>
-     * TODO errors
-     * </pre>
-     */
-    org.sonarqube.ws.Common.Paging getPaging();
-    /**
-     * <code>optional .sonarqube.ws.Paging paging = 1;</code>
-     *
-     * <pre>
-     * TODO errors
-     * </pre>
-     */
-    org.sonarqube.ws.Common.PagingOrBuilder getPagingOrBuilder();
-
-    /**
-     * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-     */
-    java.util.List<org.sonarqube.ws.Issues.Issue> 
-        getIssuesList();
-    /**
-     * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-     */
-    org.sonarqube.ws.Issues.Issue getIssues(int index);
-    /**
-     * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-     */
-    int getIssuesCount();
-    /**
-     * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-     */
-    java.util.List<? extends org.sonarqube.ws.Issues.IssueOrBuilder> 
-        getIssuesOrBuilderList();
-    /**
-     * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-     */
-    org.sonarqube.ws.Issues.IssueOrBuilder getIssuesOrBuilder(
-        int index);
-
-    /**
-     * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-     */
-    java.util.List<org.sonarqube.ws.Common.Facet> 
-        getFacetsList();
-    /**
-     * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-     */
-    org.sonarqube.ws.Common.Facet getFacets(int index);
-    /**
-     * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-     */
-    int getFacetsCount();
-    /**
-     * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-     */
-    java.util.List<? extends org.sonarqube.ws.Common.FacetOrBuilder> 
-        getFacetsOrBuilderList();
-    /**
-     * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-     */
-    org.sonarqube.ws.Common.FacetOrBuilder getFacetsOrBuilder(
-        int index);
-
-    /**
-     * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-     */
-    java.util.List<org.sonarqube.ws.Common.Component> 
-        getProjectsList();
-    /**
-     * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-     */
-    org.sonarqube.ws.Common.Component getProjects(int index);
-    /**
-     * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-     */
-    int getProjectsCount();
-    /**
-     * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-     */
-    java.util.List<? extends org.sonarqube.ws.Common.ComponentOrBuilder> 
-        getProjectsOrBuilderList();
-    /**
-     * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-     */
-    org.sonarqube.ws.Common.ComponentOrBuilder getProjectsOrBuilder(
-        int index);
-
-    /**
-     * <code>repeated .sonarqube.ws.Component components = 5;</code>
-     */
-    java.util.List<org.sonarqube.ws.Common.Component> 
-        getComponentsList();
-    /**
-     * <code>repeated .sonarqube.ws.Component components = 5;</code>
-     */
-    org.sonarqube.ws.Common.Component getComponents(int index);
-    /**
-     * <code>repeated .sonarqube.ws.Component components = 5;</code>
-     */
-    int getComponentsCount();
-    /**
-     * <code>repeated .sonarqube.ws.Component components = 5;</code>
-     */
-    java.util.List<? extends org.sonarqube.ws.Common.ComponentOrBuilder> 
-        getComponentsOrBuilderList();
-    /**
-     * <code>repeated .sonarqube.ws.Component components = 5;</code>
-     */
-    org.sonarqube.ws.Common.ComponentOrBuilder getComponentsOrBuilder(
-        int index);
-
-    /**
-     * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-     */
-    java.util.List<org.sonarqube.ws.Common.Rule> 
-        getRulesList();
-    /**
-     * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-     */
-    org.sonarqube.ws.Common.Rule getRules(int index);
-    /**
-     * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-     */
-    int getRulesCount();
-    /**
-     * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-     */
-    java.util.List<? extends org.sonarqube.ws.Common.RuleOrBuilder> 
-        getRulesOrBuilderList();
-    /**
-     * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-     */
-    org.sonarqube.ws.Common.RuleOrBuilder getRulesOrBuilder(
-        int index);
-
-    /**
-     * <code>repeated .sonarqube.ws.User users = 7;</code>
-     */
-    java.util.List<org.sonarqube.ws.Common.User> 
-        getUsersList();
-    /**
-     * <code>repeated .sonarqube.ws.User users = 7;</code>
-     */
-    org.sonarqube.ws.Common.User getUsers(int index);
-    /**
-     * <code>repeated .sonarqube.ws.User users = 7;</code>
-     */
-    int getUsersCount();
-    /**
-     * <code>repeated .sonarqube.ws.User users = 7;</code>
-     */
-    java.util.List<? extends org.sonarqube.ws.Common.UserOrBuilder> 
-        getUsersOrBuilderList();
-    /**
-     * <code>repeated .sonarqube.ws.User users = 7;</code>
-     */
-    org.sonarqube.ws.Common.UserOrBuilder getUsersOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code sonarqube.ws.issues.Search}
-   *
-   * <pre>
-   * Response of URL api/issues/search
-   * </pre>
-   */
-  public static final class Search extends
-      com.google.protobuf.GeneratedMessage implements
-      // @@protoc_insertion_point(message_implements:sonarqube.ws.issues.Search)
-      SearchOrBuilder {
-    // Use Search.newBuilder() to construct.
-    private Search(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private Search(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final Search defaultInstance;
-    public static Search getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    public Search getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Search(
-        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: {
-              org.sonarqube.ws.Common.Paging.Builder subBuilder = null;
-              if (((bitField0_ & 0x00000001) == 0x00000001)) {
-                subBuilder = paging_.toBuilder();
-              }
-              paging_ = input.readMessage(org.sonarqube.ws.Common.Paging.PARSER, extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(paging_);
-                paging_ = subBuilder.buildPartial();
-              }
-              bitField0_ |= 0x00000001;
-              break;
-            }
-            case 18: {
-              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-                issues_ = new java.util.ArrayList<org.sonarqube.ws.Issues.Issue>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              issues_.add(input.readMessage(org.sonarqube.ws.Issues.Issue.PARSER, extensionRegistry));
-              break;
-            }
-            case 26: {
-              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-                facets_ = new java.util.ArrayList<org.sonarqube.ws.Common.Facet>();
-                mutable_bitField0_ |= 0x00000004;
-              }
-              facets_.add(input.readMessage(org.sonarqube.ws.Common.Facet.PARSER, extensionRegistry));
-              break;
-            }
-            case 34: {
-              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
-                projects_ = new java.util.ArrayList<org.sonarqube.ws.Common.Component>();
-                mutable_bitField0_ |= 0x00000008;
-              }
-              projects_.add(input.readMessage(org.sonarqube.ws.Common.Component.PARSER, extensionRegistry));
-              break;
-            }
-            case 42: {
-              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
-                components_ = new java.util.ArrayList<org.sonarqube.ws.Common.Component>();
-                mutable_bitField0_ |= 0x00000010;
-              }
-              components_.add(input.readMessage(org.sonarqube.ws.Common.Component.PARSER, extensionRegistry));
-              break;
-            }
-            case 50: {
-              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
-                rules_ = new java.util.ArrayList<org.sonarqube.ws.Common.Rule>();
-                mutable_bitField0_ |= 0x00000020;
-              }
-              rules_.add(input.readMessage(org.sonarqube.ws.Common.Rule.PARSER, extensionRegistry));
-              break;
-            }
-            case 58: {
-              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
-                users_ = new java.util.ArrayList<org.sonarqube.ws.Common.User>();
-                mutable_bitField0_ |= 0x00000040;
-              }
-              users_.add(input.readMessage(org.sonarqube.ws.Common.User.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)) {
-          issues_ = java.util.Collections.unmodifiableList(issues_);
-        }
-        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-          facets_ = java.util.Collections.unmodifiableList(facets_);
-        }
-        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
-          projects_ = java.util.Collections.unmodifiableList(projects_);
-        }
-        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
-          components_ = java.util.Collections.unmodifiableList(components_);
-        }
-        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
-          rules_ = java.util.Collections.unmodifiableList(rules_);
-        }
-        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
-          users_ = java.util.Collections.unmodifiableList(users_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Search_descriptor;
-    }
-
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Search_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              org.sonarqube.ws.Issues.Search.class, org.sonarqube.ws.Issues.Search.Builder.class);
-    }
-
-    public static com.google.protobuf.Parser<Search> PARSER =
-        new com.google.protobuf.AbstractParser<Search>() {
-      public Search parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Search(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<Search> getParserForType() {
-      return PARSER;
-    }
-
-    private int bitField0_;
-    public static final int PAGING_FIELD_NUMBER = 1;
-    private org.sonarqube.ws.Common.Paging paging_;
-    /**
-     * <code>optional .sonarqube.ws.Paging paging = 1;</code>
-     *
-     * <pre>
-     * TODO errors
-     * </pre>
-     */
-    public boolean hasPaging() {
-      return ((bitField0_ & 0x00000001) == 0x00000001);
-    }
-    /**
-     * <code>optional .sonarqube.ws.Paging paging = 1;</code>
-     *
-     * <pre>
-     * TODO errors
-     * </pre>
-     */
-    public org.sonarqube.ws.Common.Paging getPaging() {
-      return paging_;
-    }
-    /**
-     * <code>optional .sonarqube.ws.Paging paging = 1;</code>
-     *
-     * <pre>
-     * TODO errors
-     * </pre>
-     */
-    public org.sonarqube.ws.Common.PagingOrBuilder getPagingOrBuilder() {
-      return paging_;
-    }
-
-    public static final int ISSUES_FIELD_NUMBER = 2;
-    private java.util.List<org.sonarqube.ws.Issues.Issue> issues_;
-    /**
-     * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-     */
-    public java.util.List<org.sonarqube.ws.Issues.Issue> getIssuesList() {
-      return issues_;
-    }
-    /**
-     * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-     */
-    public java.util.List<? extends org.sonarqube.ws.Issues.IssueOrBuilder> 
-        getIssuesOrBuilderList() {
-      return issues_;
-    }
-    /**
-     * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-     */
-    public int getIssuesCount() {
-      return issues_.size();
-    }
-    /**
-     * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-     */
-    public org.sonarqube.ws.Issues.Issue getIssues(int index) {
-      return issues_.get(index);
-    }
-    /**
-     * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-     */
-    public org.sonarqube.ws.Issues.IssueOrBuilder getIssuesOrBuilder(
-        int index) {
-      return issues_.get(index);
-    }
-
-    public static final int FACETS_FIELD_NUMBER = 3;
-    private java.util.List<org.sonarqube.ws.Common.Facet> facets_;
-    /**
-     * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-     */
-    public java.util.List<org.sonarqube.ws.Common.Facet> getFacetsList() {
-      return facets_;
-    }
-    /**
-     * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-     */
-    public java.util.List<? extends org.sonarqube.ws.Common.FacetOrBuilder> 
-        getFacetsOrBuilderList() {
-      return facets_;
-    }
-    /**
-     * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-     */
-    public int getFacetsCount() {
-      return facets_.size();
-    }
-    /**
-     * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-     */
-    public org.sonarqube.ws.Common.Facet getFacets(int index) {
-      return facets_.get(index);
-    }
-    /**
-     * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-     */
-    public org.sonarqube.ws.Common.FacetOrBuilder getFacetsOrBuilder(
-        int index) {
-      return facets_.get(index);
-    }
-
-    public static final int PROJECTS_FIELD_NUMBER = 4;
-    private java.util.List<org.sonarqube.ws.Common.Component> projects_;
-    /**
-     * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-     */
-    public java.util.List<org.sonarqube.ws.Common.Component> getProjectsList() {
-      return projects_;
-    }
-    /**
-     * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-     */
-    public java.util.List<? extends org.sonarqube.ws.Common.ComponentOrBuilder> 
-        getProjectsOrBuilderList() {
-      return projects_;
-    }
-    /**
-     * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-     */
-    public int getProjectsCount() {
-      return projects_.size();
-    }
-    /**
-     * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-     */
-    public org.sonarqube.ws.Common.Component getProjects(int index) {
-      return projects_.get(index);
-    }
-    /**
-     * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-     */
-    public org.sonarqube.ws.Common.ComponentOrBuilder getProjectsOrBuilder(
-        int index) {
-      return projects_.get(index);
-    }
-
-    public static final int COMPONENTS_FIELD_NUMBER = 5;
-    private java.util.List<org.sonarqube.ws.Common.Component> components_;
-    /**
-     * <code>repeated .sonarqube.ws.Component components = 5;</code>
-     */
-    public java.util.List<org.sonarqube.ws.Common.Component> getComponentsList() {
-      return components_;
-    }
-    /**
-     * <code>repeated .sonarqube.ws.Component components = 5;</code>
-     */
-    public java.util.List<? extends org.sonarqube.ws.Common.ComponentOrBuilder> 
-        getComponentsOrBuilderList() {
-      return components_;
-    }
-    /**
-     * <code>repeated .sonarqube.ws.Component components = 5;</code>
-     */
-    public int getComponentsCount() {
-      return components_.size();
-    }
-    /**
-     * <code>repeated .sonarqube.ws.Component components = 5;</code>
-     */
-    public org.sonarqube.ws.Common.Component getComponents(int index) {
-      return components_.get(index);
-    }
-    /**
-     * <code>repeated .sonarqube.ws.Component components = 5;</code>
-     */
-    public org.sonarqube.ws.Common.ComponentOrBuilder getComponentsOrBuilder(
-        int index) {
-      return components_.get(index);
-    }
-
-    public static final int RULES_FIELD_NUMBER = 6;
-    private java.util.List<org.sonarqube.ws.Common.Rule> rules_;
-    /**
-     * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-     */
-    public java.util.List<org.sonarqube.ws.Common.Rule> getRulesList() {
-      return rules_;
-    }
-    /**
-     * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-     */
-    public java.util.List<? extends org.sonarqube.ws.Common.RuleOrBuilder> 
-        getRulesOrBuilderList() {
-      return rules_;
-    }
-    /**
-     * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-     */
-    public int getRulesCount() {
-      return rules_.size();
-    }
-    /**
-     * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-     */
-    public org.sonarqube.ws.Common.Rule getRules(int index) {
-      return rules_.get(index);
-    }
-    /**
-     * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-     */
-    public org.sonarqube.ws.Common.RuleOrBuilder getRulesOrBuilder(
-        int index) {
-      return rules_.get(index);
-    }
-
-    public static final int USERS_FIELD_NUMBER = 7;
-    private java.util.List<org.sonarqube.ws.Common.User> users_;
-    /**
-     * <code>repeated .sonarqube.ws.User users = 7;</code>
-     */
-    public java.util.List<org.sonarqube.ws.Common.User> getUsersList() {
-      return users_;
-    }
-    /**
-     * <code>repeated .sonarqube.ws.User users = 7;</code>
-     */
-    public java.util.List<? extends org.sonarqube.ws.Common.UserOrBuilder> 
-        getUsersOrBuilderList() {
-      return users_;
-    }
-    /**
-     * <code>repeated .sonarqube.ws.User users = 7;</code>
-     */
-    public int getUsersCount() {
-      return users_.size();
-    }
-    /**
-     * <code>repeated .sonarqube.ws.User users = 7;</code>
-     */
-    public org.sonarqube.ws.Common.User getUsers(int index) {
-      return users_.get(index);
-    }
-    /**
-     * <code>repeated .sonarqube.ws.User users = 7;</code>
-     */
-    public org.sonarqube.ws.Common.UserOrBuilder getUsersOrBuilder(
-        int index) {
-      return users_.get(index);
-    }
-
-    private void initFields() {
-      paging_ = org.sonarqube.ws.Common.Paging.getDefaultInstance();
-      issues_ = java.util.Collections.emptyList();
-      facets_ = java.util.Collections.emptyList();
-      projects_ = java.util.Collections.emptyList();
-      components_ = java.util.Collections.emptyList();
-      rules_ = java.util.Collections.emptyList();
-      users_ = 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.writeMessage(1, paging_);
-      }
-      for (int i = 0; i < issues_.size(); i++) {
-        output.writeMessage(2, issues_.get(i));
-      }
-      for (int i = 0; i < facets_.size(); i++) {
-        output.writeMessage(3, facets_.get(i));
-      }
-      for (int i = 0; i < projects_.size(); i++) {
-        output.writeMessage(4, projects_.get(i));
-      }
-      for (int i = 0; i < components_.size(); i++) {
-        output.writeMessage(5, components_.get(i));
-      }
-      for (int i = 0; i < rules_.size(); i++) {
-        output.writeMessage(6, rules_.get(i));
-      }
-      for (int i = 0; i < users_.size(); i++) {
-        output.writeMessage(7, users_.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
-          .computeMessageSize(1, paging_);
-      }
-      for (int i = 0; i < issues_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, issues_.get(i));
-      }
-      for (int i = 0; i < facets_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, facets_.get(i));
-      }
-      for (int i = 0; i < projects_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, projects_.get(i));
-      }
-      for (int i = 0; i < components_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(5, components_.get(i));
-      }
-      for (int i = 0; i < rules_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(6, rules_.get(i));
-      }
-      for (int i = 0; i < users_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(7, users_.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.sonarqube.ws.Issues.Search parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonarqube.ws.Issues.Search parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Issues.Search parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonarqube.ws.Issues.Search parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Issues.Search parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonarqube.ws.Issues.Search parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Issues.Search parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
-    }
-    public static org.sonarqube.ws.Issues.Search parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Issues.Search parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonarqube.ws.Issues.Search 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.sonarqube.ws.Issues.Search 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 sonarqube.ws.issues.Search}
-     *
-     * <pre>
-     * Response of URL api/issues/search
-     * </pre>
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:sonarqube.ws.issues.Search)
-        org.sonarqube.ws.Issues.SearchOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Search_descriptor;
-      }
-
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Search_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                org.sonarqube.ws.Issues.Search.class, org.sonarqube.ws.Issues.Search.Builder.class);
-      }
-
-      // Construct using org.sonarqube.ws.Issues.Search.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
-          getPagingFieldBuilder();
-          getIssuesFieldBuilder();
-          getFacetsFieldBuilder();
-          getProjectsFieldBuilder();
-          getComponentsFieldBuilder();
-          getRulesFieldBuilder();
-          getUsersFieldBuilder();
-        }
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      public Builder clear() {
-        super.clear();
-        if (pagingBuilder_ == null) {
-          paging_ = org.sonarqube.ws.Common.Paging.getDefaultInstance();
-        } else {
-          pagingBuilder_.clear();
-        }
-        bitField0_ = (bitField0_ & ~0x00000001);
-        if (issuesBuilder_ == null) {
-          issues_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-        } else {
-          issuesBuilder_.clear();
-        }
-        if (facetsBuilder_ == null) {
-          facets_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000004);
-        } else {
-          facetsBuilder_.clear();
-        }
-        if (projectsBuilder_ == null) {
-          projects_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000008);
-        } else {
-          projectsBuilder_.clear();
-        }
-        if (componentsBuilder_ == null) {
-          components_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000010);
-        } else {
-          componentsBuilder_.clear();
-        }
-        if (rulesBuilder_ == null) {
-          rules_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000020);
-        } else {
-          rulesBuilder_.clear();
-        }
-        if (usersBuilder_ == null) {
-          users_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000040);
-        } else {
-          usersBuilder_.clear();
-        }
-        return this;
-      }
-
-      public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Search_descriptor;
-      }
-
-      public org.sonarqube.ws.Issues.Search getDefaultInstanceForType() {
-        return org.sonarqube.ws.Issues.Search.getDefaultInstance();
-      }
-
-      public org.sonarqube.ws.Issues.Search build() {
-        org.sonarqube.ws.Issues.Search result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      public org.sonarqube.ws.Issues.Search buildPartial() {
-        org.sonarqube.ws.Issues.Search result = new org.sonarqube.ws.Issues.Search(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        if (pagingBuilder_ == null) {
-          result.paging_ = paging_;
-        } else {
-          result.paging_ = pagingBuilder_.build();
-        }
-        if (issuesBuilder_ == null) {
-          if (((bitField0_ & 0x00000002) == 0x00000002)) {
-            issues_ = java.util.Collections.unmodifiableList(issues_);
-            bitField0_ = (bitField0_ & ~0x00000002);
-          }
-          result.issues_ = issues_;
-        } else {
-          result.issues_ = issuesBuilder_.build();
-        }
-        if (facetsBuilder_ == null) {
-          if (((bitField0_ & 0x00000004) == 0x00000004)) {
-            facets_ = java.util.Collections.unmodifiableList(facets_);
-            bitField0_ = (bitField0_ & ~0x00000004);
-          }
-          result.facets_ = facets_;
-        } else {
-          result.facets_ = facetsBuilder_.build();
-        }
-        if (projectsBuilder_ == null) {
-          if (((bitField0_ & 0x00000008) == 0x00000008)) {
-            projects_ = java.util.Collections.unmodifiableList(projects_);
-            bitField0_ = (bitField0_ & ~0x00000008);
-          }
-          result.projects_ = projects_;
-        } else {
-          result.projects_ = projectsBuilder_.build();
-        }
-        if (componentsBuilder_ == null) {
-          if (((bitField0_ & 0x00000010) == 0x00000010)) {
-            components_ = java.util.Collections.unmodifiableList(components_);
-            bitField0_ = (bitField0_ & ~0x00000010);
-          }
-          result.components_ = components_;
-        } else {
-          result.components_ = componentsBuilder_.build();
-        }
-        if (rulesBuilder_ == null) {
-          if (((bitField0_ & 0x00000020) == 0x00000020)) {
-            rules_ = java.util.Collections.unmodifiableList(rules_);
-            bitField0_ = (bitField0_ & ~0x00000020);
-          }
-          result.rules_ = rules_;
-        } else {
-          result.rules_ = rulesBuilder_.build();
-        }
-        if (usersBuilder_ == null) {
-          if (((bitField0_ & 0x00000040) == 0x00000040)) {
-            users_ = java.util.Collections.unmodifiableList(users_);
-            bitField0_ = (bitField0_ & ~0x00000040);
-          }
-          result.users_ = users_;
-        } else {
-          result.users_ = usersBuilder_.build();
-        }
-        result.bitField0_ = to_bitField0_;
-        onBuilt();
-        return result;
-      }
-
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.sonarqube.ws.Issues.Search) {
-          return mergeFrom((org.sonarqube.ws.Issues.Search)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(org.sonarqube.ws.Issues.Search other) {
-        if (other == org.sonarqube.ws.Issues.Search.getDefaultInstance()) return this;
-        if (other.hasPaging()) {
-          mergePaging(other.getPaging());
-        }
-        if (issuesBuilder_ == null) {
-          if (!other.issues_.isEmpty()) {
-            if (issues_.isEmpty()) {
-              issues_ = other.issues_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-            } else {
-              ensureIssuesIsMutable();
-              issues_.addAll(other.issues_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.issues_.isEmpty()) {
-            if (issuesBuilder_.isEmpty()) {
-              issuesBuilder_.dispose();
-              issuesBuilder_ = null;
-              issues_ = other.issues_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-              issuesBuilder_ = 
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
-                   getIssuesFieldBuilder() : null;
-            } else {
-              issuesBuilder_.addAllMessages(other.issues_);
-            }
-          }
-        }
-        if (facetsBuilder_ == null) {
-          if (!other.facets_.isEmpty()) {
-            if (facets_.isEmpty()) {
-              facets_ = other.facets_;
-              bitField0_ = (bitField0_ & ~0x00000004);
-            } else {
-              ensureFacetsIsMutable();
-              facets_.addAll(other.facets_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.facets_.isEmpty()) {
-            if (facetsBuilder_.isEmpty()) {
-              facetsBuilder_.dispose();
-              facetsBuilder_ = null;
-              facets_ = other.facets_;
-              bitField0_ = (bitField0_ & ~0x00000004);
-              facetsBuilder_ = 
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
-                   getFacetsFieldBuilder() : null;
-            } else {
-              facetsBuilder_.addAllMessages(other.facets_);
-            }
-          }
-        }
-        if (projectsBuilder_ == null) {
-          if (!other.projects_.isEmpty()) {
-            if (projects_.isEmpty()) {
-              projects_ = other.projects_;
-              bitField0_ = (bitField0_ & ~0x00000008);
-            } else {
-              ensureProjectsIsMutable();
-              projects_.addAll(other.projects_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.projects_.isEmpty()) {
-            if (projectsBuilder_.isEmpty()) {
-              projectsBuilder_.dispose();
-              projectsBuilder_ = null;
-              projects_ = other.projects_;
-              bitField0_ = (bitField0_ & ~0x00000008);
-              projectsBuilder_ = 
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
-                   getProjectsFieldBuilder() : null;
-            } else {
-              projectsBuilder_.addAllMessages(other.projects_);
-            }
-          }
-        }
-        if (componentsBuilder_ == null) {
-          if (!other.components_.isEmpty()) {
-            if (components_.isEmpty()) {
-              components_ = other.components_;
-              bitField0_ = (bitField0_ & ~0x00000010);
-            } else {
-              ensureComponentsIsMutable();
-              components_.addAll(other.components_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.components_.isEmpty()) {
-            if (componentsBuilder_.isEmpty()) {
-              componentsBuilder_.dispose();
-              componentsBuilder_ = null;
-              components_ = other.components_;
-              bitField0_ = (bitField0_ & ~0x00000010);
-              componentsBuilder_ = 
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
-                   getComponentsFieldBuilder() : null;
-            } else {
-              componentsBuilder_.addAllMessages(other.components_);
-            }
-          }
-        }
-        if (rulesBuilder_ == null) {
-          if (!other.rules_.isEmpty()) {
-            if (rules_.isEmpty()) {
-              rules_ = other.rules_;
-              bitField0_ = (bitField0_ & ~0x00000020);
-            } else {
-              ensureRulesIsMutable();
-              rules_.addAll(other.rules_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.rules_.isEmpty()) {
-            if (rulesBuilder_.isEmpty()) {
-              rulesBuilder_.dispose();
-              rulesBuilder_ = null;
-              rules_ = other.rules_;
-              bitField0_ = (bitField0_ & ~0x00000020);
-              rulesBuilder_ = 
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
-                   getRulesFieldBuilder() : null;
-            } else {
-              rulesBuilder_.addAllMessages(other.rules_);
-            }
-          }
-        }
-        if (usersBuilder_ == null) {
-          if (!other.users_.isEmpty()) {
-            if (users_.isEmpty()) {
-              users_ = other.users_;
-              bitField0_ = (bitField0_ & ~0x00000040);
-            } else {
-              ensureUsersIsMutable();
-              users_.addAll(other.users_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.users_.isEmpty()) {
-            if (usersBuilder_.isEmpty()) {
-              usersBuilder_.dispose();
-              usersBuilder_ = null;
-              users_ = other.users_;
-              bitField0_ = (bitField0_ & ~0x00000040);
-              usersBuilder_ = 
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
-                   getUsersFieldBuilder() : null;
-            } else {
-              usersBuilder_.addAllMessages(other.users_);
-            }
-          }
-        }
-        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.sonarqube.ws.Issues.Search parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.sonarqube.ws.Issues.Search) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private org.sonarqube.ws.Common.Paging paging_ = org.sonarqube.ws.Common.Paging.getDefaultInstance();
-      private com.google.protobuf.SingleFieldBuilder<
-          org.sonarqube.ws.Common.Paging, org.sonarqube.ws.Common.Paging.Builder, org.sonarqube.ws.Common.PagingOrBuilder> pagingBuilder_;
-      /**
-       * <code>optional .sonarqube.ws.Paging paging = 1;</code>
-       *
-       * <pre>
-       * TODO errors
-       * </pre>
-       */
-      public boolean hasPaging() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
-       * <code>optional .sonarqube.ws.Paging paging = 1;</code>
-       *
-       * <pre>
-       * TODO errors
-       * </pre>
-       */
-      public org.sonarqube.ws.Common.Paging getPaging() {
-        if (pagingBuilder_ == null) {
-          return paging_;
-        } else {
-          return pagingBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>optional .sonarqube.ws.Paging paging = 1;</code>
-       *
-       * <pre>
-       * TODO errors
-       * </pre>
-       */
-      public Builder setPaging(org.sonarqube.ws.Common.Paging value) {
-        if (pagingBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          paging_ = value;
-          onChanged();
-        } else {
-          pagingBuilder_.setMessage(value);
-        }
-        bitField0_ |= 0x00000001;
-        return this;
-      }
-      /**
-       * <code>optional .sonarqube.ws.Paging paging = 1;</code>
-       *
-       * <pre>
-       * TODO errors
-       * </pre>
-       */
-      public Builder setPaging(
-          org.sonarqube.ws.Common.Paging.Builder builderForValue) {
-        if (pagingBuilder_ == null) {
-          paging_ = builderForValue.build();
-          onChanged();
-        } else {
-          pagingBuilder_.setMessage(builderForValue.build());
-        }
-        bitField0_ |= 0x00000001;
-        return this;
-      }
-      /**
-       * <code>optional .sonarqube.ws.Paging paging = 1;</code>
-       *
-       * <pre>
-       * TODO errors
-       * </pre>
-       */
-      public Builder mergePaging(org.sonarqube.ws.Common.Paging value) {
-        if (pagingBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) == 0x00000001) &&
-              paging_ != org.sonarqube.ws.Common.Paging.getDefaultInstance()) {
-            paging_ =
-              org.sonarqube.ws.Common.Paging.newBuilder(paging_).mergeFrom(value).buildPartial();
-          } else {
-            paging_ = value;
-          }
-          onChanged();
-        } else {
-          pagingBuilder_.mergeFrom(value);
-        }
-        bitField0_ |= 0x00000001;
-        return this;
-      }
-      /**
-       * <code>optional .sonarqube.ws.Paging paging = 1;</code>
-       *
-       * <pre>
-       * TODO errors
-       * </pre>
-       */
-      public Builder clearPaging() {
-        if (pagingBuilder_ == null) {
-          paging_ = org.sonarqube.ws.Common.Paging.getDefaultInstance();
-          onChanged();
-        } else {
-          pagingBuilder_.clear();
-        }
-        bitField0_ = (bitField0_ & ~0x00000001);
-        return this;
-      }
-      /**
-       * <code>optional .sonarqube.ws.Paging paging = 1;</code>
-       *
-       * <pre>
-       * TODO errors
-       * </pre>
-       */
-      public org.sonarqube.ws.Common.Paging.Builder getPagingBuilder() {
-        bitField0_ |= 0x00000001;
-        onChanged();
-        return getPagingFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>optional .sonarqube.ws.Paging paging = 1;</code>
-       *
-       * <pre>
-       * TODO errors
-       * </pre>
-       */
-      public org.sonarqube.ws.Common.PagingOrBuilder getPagingOrBuilder() {
-        if (pagingBuilder_ != null) {
-          return pagingBuilder_.getMessageOrBuilder();
-        } else {
-          return paging_;
-        }
-      }
-      /**
-       * <code>optional .sonarqube.ws.Paging paging = 1;</code>
-       *
-       * <pre>
-       * TODO errors
-       * </pre>
-       */
-      private com.google.protobuf.SingleFieldBuilder<
-          org.sonarqube.ws.Common.Paging, org.sonarqube.ws.Common.Paging.Builder, org.sonarqube.ws.Common.PagingOrBuilder> 
-          getPagingFieldBuilder() {
-        if (pagingBuilder_ == null) {
-          pagingBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              org.sonarqube.ws.Common.Paging, org.sonarqube.ws.Common.Paging.Builder, org.sonarqube.ws.Common.PagingOrBuilder>(
-                  getPaging(),
-                  getParentForChildren(),
-                  isClean());
-          paging_ = null;
-        }
-        return pagingBuilder_;
-      }
-
-      private java.util.List<org.sonarqube.ws.Issues.Issue> issues_ =
-        java.util.Collections.emptyList();
-      private void ensureIssuesIsMutable() {
-        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
-          issues_ = new java.util.ArrayList<org.sonarqube.ws.Issues.Issue>(issues_);
-          bitField0_ |= 0x00000002;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.sonarqube.ws.Issues.Issue, org.sonarqube.ws.Issues.Issue.Builder, org.sonarqube.ws.Issues.IssueOrBuilder> issuesBuilder_;
-
-      /**
-       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-       */
-      public java.util.List<org.sonarqube.ws.Issues.Issue> getIssuesList() {
-        if (issuesBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(issues_);
-        } else {
-          return issuesBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-       */
-      public int getIssuesCount() {
-        if (issuesBuilder_ == null) {
-          return issues_.size();
-        } else {
-          return issuesBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-       */
-      public org.sonarqube.ws.Issues.Issue getIssues(int index) {
-        if (issuesBuilder_ == null) {
-          return issues_.get(index);
-        } else {
-          return issuesBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-       */
-      public Builder setIssues(
-          int index, org.sonarqube.ws.Issues.Issue value) {
-        if (issuesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureIssuesIsMutable();
-          issues_.set(index, value);
-          onChanged();
-        } else {
-          issuesBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-       */
-      public Builder setIssues(
-          int index, org.sonarqube.ws.Issues.Issue.Builder builderForValue) {
-        if (issuesBuilder_ == null) {
-          ensureIssuesIsMutable();
-          issues_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          issuesBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-       */
-      public Builder addIssues(org.sonarqube.ws.Issues.Issue value) {
-        if (issuesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureIssuesIsMutable();
-          issues_.add(value);
-          onChanged();
-        } else {
-          issuesBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-       */
-      public Builder addIssues(
-          int index, org.sonarqube.ws.Issues.Issue value) {
-        if (issuesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureIssuesIsMutable();
-          issues_.add(index, value);
-          onChanged();
-        } else {
-          issuesBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-       */
-      public Builder addIssues(
-          org.sonarqube.ws.Issues.Issue.Builder builderForValue) {
-        if (issuesBuilder_ == null) {
-          ensureIssuesIsMutable();
-          issues_.add(builderForValue.build());
-          onChanged();
-        } else {
-          issuesBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-       */
-      public Builder addIssues(
-          int index, org.sonarqube.ws.Issues.Issue.Builder builderForValue) {
-        if (issuesBuilder_ == null) {
-          ensureIssuesIsMutable();
-          issues_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          issuesBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-       */
-      public Builder addAllIssues(
-          java.lang.Iterable<? extends org.sonarqube.ws.Issues.Issue> values) {
-        if (issuesBuilder_ == null) {
-          ensureIssuesIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, issues_);
-          onChanged();
-        } else {
-          issuesBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-       */
-      public Builder clearIssues() {
-        if (issuesBuilder_ == null) {
-          issues_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-          onChanged();
-        } else {
-          issuesBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-       */
-      public Builder removeIssues(int index) {
-        if (issuesBuilder_ == null) {
-          ensureIssuesIsMutable();
-          issues_.remove(index);
-          onChanged();
-        } else {
-          issuesBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-       */
-      public org.sonarqube.ws.Issues.Issue.Builder getIssuesBuilder(
-          int index) {
-        return getIssuesFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-       */
-      public org.sonarqube.ws.Issues.IssueOrBuilder getIssuesOrBuilder(
-          int index) {
-        if (issuesBuilder_ == null) {
-          return issues_.get(index);  } else {
-          return issuesBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-       */
-      public java.util.List<? extends org.sonarqube.ws.Issues.IssueOrBuilder> 
-           getIssuesOrBuilderList() {
-        if (issuesBuilder_ != null) {
-          return issuesBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(issues_);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-       */
-      public org.sonarqube.ws.Issues.Issue.Builder addIssuesBuilder() {
-        return getIssuesFieldBuilder().addBuilder(
-            org.sonarqube.ws.Issues.Issue.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-       */
-      public org.sonarqube.ws.Issues.Issue.Builder addIssuesBuilder(
-          int index) {
-        return getIssuesFieldBuilder().addBuilder(
-            index, org.sonarqube.ws.Issues.Issue.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
-       */
-      public java.util.List<org.sonarqube.ws.Issues.Issue.Builder> 
-           getIssuesBuilderList() {
-        return getIssuesFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.sonarqube.ws.Issues.Issue, org.sonarqube.ws.Issues.Issue.Builder, org.sonarqube.ws.Issues.IssueOrBuilder> 
-          getIssuesFieldBuilder() {
-        if (issuesBuilder_ == null) {
-          issuesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              org.sonarqube.ws.Issues.Issue, org.sonarqube.ws.Issues.Issue.Builder, org.sonarqube.ws.Issues.IssueOrBuilder>(
-                  issues_,
-                  ((bitField0_ & 0x00000002) == 0x00000002),
-                  getParentForChildren(),
-                  isClean());
-          issues_ = null;
-        }
-        return issuesBuilder_;
-      }
-
-      private java.util.List<org.sonarqube.ws.Common.Facet> facets_ =
-        java.util.Collections.emptyList();
-      private void ensureFacetsIsMutable() {
-        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
-          facets_ = new java.util.ArrayList<org.sonarqube.ws.Common.Facet>(facets_);
-          bitField0_ |= 0x00000004;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.sonarqube.ws.Common.Facet, org.sonarqube.ws.Common.Facet.Builder, org.sonarqube.ws.Common.FacetOrBuilder> facetsBuilder_;
-
-      /**
-       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-       */
-      public java.util.List<org.sonarqube.ws.Common.Facet> getFacetsList() {
-        if (facetsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(facets_);
-        } else {
-          return facetsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-       */
-      public int getFacetsCount() {
-        if (facetsBuilder_ == null) {
-          return facets_.size();
-        } else {
-          return facetsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-       */
-      public org.sonarqube.ws.Common.Facet getFacets(int index) {
-        if (facetsBuilder_ == null) {
-          return facets_.get(index);
-        } else {
-          return facetsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-       */
-      public Builder setFacets(
-          int index, org.sonarqube.ws.Common.Facet value) {
-        if (facetsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureFacetsIsMutable();
-          facets_.set(index, value);
-          onChanged();
-        } else {
-          facetsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-       */
-      public Builder setFacets(
-          int index, org.sonarqube.ws.Common.Facet.Builder builderForValue) {
-        if (facetsBuilder_ == null) {
-          ensureFacetsIsMutable();
-          facets_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          facetsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-       */
-      public Builder addFacets(org.sonarqube.ws.Common.Facet value) {
-        if (facetsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureFacetsIsMutable();
-          facets_.add(value);
-          onChanged();
-        } else {
-          facetsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-       */
-      public Builder addFacets(
-          int index, org.sonarqube.ws.Common.Facet value) {
-        if (facetsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureFacetsIsMutable();
-          facets_.add(index, value);
-          onChanged();
-        } else {
-          facetsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-       */
-      public Builder addFacets(
-          org.sonarqube.ws.Common.Facet.Builder builderForValue) {
-        if (facetsBuilder_ == null) {
-          ensureFacetsIsMutable();
-          facets_.add(builderForValue.build());
-          onChanged();
-        } else {
-          facetsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-       */
-      public Builder addFacets(
-          int index, org.sonarqube.ws.Common.Facet.Builder builderForValue) {
-        if (facetsBuilder_ == null) {
-          ensureFacetsIsMutable();
-          facets_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          facetsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-       */
-      public Builder addAllFacets(
-          java.lang.Iterable<? extends org.sonarqube.ws.Common.Facet> values) {
-        if (facetsBuilder_ == null) {
-          ensureFacetsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, facets_);
-          onChanged();
-        } else {
-          facetsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-       */
-      public Builder clearFacets() {
-        if (facetsBuilder_ == null) {
-          facets_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000004);
-          onChanged();
-        } else {
-          facetsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-       */
-      public Builder removeFacets(int index) {
-        if (facetsBuilder_ == null) {
-          ensureFacetsIsMutable();
-          facets_.remove(index);
-          onChanged();
-        } else {
-          facetsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-       */
-      public org.sonarqube.ws.Common.Facet.Builder getFacetsBuilder(
-          int index) {
-        return getFacetsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-       */
-      public org.sonarqube.ws.Common.FacetOrBuilder getFacetsOrBuilder(
-          int index) {
-        if (facetsBuilder_ == null) {
-          return facets_.get(index);  } else {
-          return facetsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-       */
-      public java.util.List<? extends org.sonarqube.ws.Common.FacetOrBuilder> 
-           getFacetsOrBuilderList() {
-        if (facetsBuilder_ != null) {
-          return facetsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(facets_);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-       */
-      public org.sonarqube.ws.Common.Facet.Builder addFacetsBuilder() {
-        return getFacetsFieldBuilder().addBuilder(
-            org.sonarqube.ws.Common.Facet.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-       */
-      public org.sonarqube.ws.Common.Facet.Builder addFacetsBuilder(
-          int index) {
-        return getFacetsFieldBuilder().addBuilder(
-            index, org.sonarqube.ws.Common.Facet.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
-       */
-      public java.util.List<org.sonarqube.ws.Common.Facet.Builder> 
-           getFacetsBuilderList() {
-        return getFacetsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.sonarqube.ws.Common.Facet, org.sonarqube.ws.Common.Facet.Builder, org.sonarqube.ws.Common.FacetOrBuilder> 
-          getFacetsFieldBuilder() {
-        if (facetsBuilder_ == null) {
-          facetsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              org.sonarqube.ws.Common.Facet, org.sonarqube.ws.Common.Facet.Builder, org.sonarqube.ws.Common.FacetOrBuilder>(
-                  facets_,
-                  ((bitField0_ & 0x00000004) == 0x00000004),
-                  getParentForChildren(),
-                  isClean());
-          facets_ = null;
-        }
-        return facetsBuilder_;
-      }
-
-      private java.util.List<org.sonarqube.ws.Common.Component> projects_ =
-        java.util.Collections.emptyList();
-      private void ensureProjectsIsMutable() {
-        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
-          projects_ = new java.util.ArrayList<org.sonarqube.ws.Common.Component>(projects_);
-          bitField0_ |= 0x00000008;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.sonarqube.ws.Common.Component, org.sonarqube.ws.Common.Component.Builder, org.sonarqube.ws.Common.ComponentOrBuilder> projectsBuilder_;
-
-      /**
-       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-       */
-      public java.util.List<org.sonarqube.ws.Common.Component> getProjectsList() {
-        if (projectsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(projects_);
-        } else {
-          return projectsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-       */
-      public int getProjectsCount() {
-        if (projectsBuilder_ == null) {
-          return projects_.size();
-        } else {
-          return projectsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-       */
-      public org.sonarqube.ws.Common.Component getProjects(int index) {
-        if (projectsBuilder_ == null) {
-          return projects_.get(index);
-        } else {
-          return projectsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-       */
-      public Builder setProjects(
-          int index, org.sonarqube.ws.Common.Component value) {
-        if (projectsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureProjectsIsMutable();
-          projects_.set(index, value);
-          onChanged();
-        } else {
-          projectsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-       */
-      public Builder setProjects(
-          int index, org.sonarqube.ws.Common.Component.Builder builderForValue) {
-        if (projectsBuilder_ == null) {
-          ensureProjectsIsMutable();
-          projects_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          projectsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-       */
-      public Builder addProjects(org.sonarqube.ws.Common.Component value) {
-        if (projectsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureProjectsIsMutable();
-          projects_.add(value);
-          onChanged();
-        } else {
-          projectsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-       */
-      public Builder addProjects(
-          int index, org.sonarqube.ws.Common.Component value) {
-        if (projectsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureProjectsIsMutable();
-          projects_.add(index, value);
-          onChanged();
-        } else {
-          projectsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-       */
-      public Builder addProjects(
-          org.sonarqube.ws.Common.Component.Builder builderForValue) {
-        if (projectsBuilder_ == null) {
-          ensureProjectsIsMutable();
-          projects_.add(builderForValue.build());
-          onChanged();
-        } else {
-          projectsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-       */
-      public Builder addProjects(
-          int index, org.sonarqube.ws.Common.Component.Builder builderForValue) {
-        if (projectsBuilder_ == null) {
-          ensureProjectsIsMutable();
-          projects_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          projectsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-       */
-      public Builder addAllProjects(
-          java.lang.Iterable<? extends org.sonarqube.ws.Common.Component> values) {
-        if (projectsBuilder_ == null) {
-          ensureProjectsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, projects_);
-          onChanged();
-        } else {
-          projectsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-       */
-      public Builder clearProjects() {
-        if (projectsBuilder_ == null) {
-          projects_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000008);
-          onChanged();
-        } else {
-          projectsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-       */
-      public Builder removeProjects(int index) {
-        if (projectsBuilder_ == null) {
-          ensureProjectsIsMutable();
-          projects_.remove(index);
-          onChanged();
-        } else {
-          projectsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-       */
-      public org.sonarqube.ws.Common.Component.Builder getProjectsBuilder(
-          int index) {
-        return getProjectsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-       */
-      public org.sonarqube.ws.Common.ComponentOrBuilder getProjectsOrBuilder(
-          int index) {
-        if (projectsBuilder_ == null) {
-          return projects_.get(index);  } else {
-          return projectsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-       */
-      public java.util.List<? extends org.sonarqube.ws.Common.ComponentOrBuilder> 
-           getProjectsOrBuilderList() {
-        if (projectsBuilder_ != null) {
-          return projectsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(projects_);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-       */
-      public org.sonarqube.ws.Common.Component.Builder addProjectsBuilder() {
-        return getProjectsFieldBuilder().addBuilder(
-            org.sonarqube.ws.Common.Component.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-       */
-      public org.sonarqube.ws.Common.Component.Builder addProjectsBuilder(
-          int index) {
-        return getProjectsFieldBuilder().addBuilder(
-            index, org.sonarqube.ws.Common.Component.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
-       */
-      public java.util.List<org.sonarqube.ws.Common.Component.Builder> 
-           getProjectsBuilderList() {
-        return getProjectsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.sonarqube.ws.Common.Component, org.sonarqube.ws.Common.Component.Builder, org.sonarqube.ws.Common.ComponentOrBuilder> 
-          getProjectsFieldBuilder() {
-        if (projectsBuilder_ == null) {
-          projectsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              org.sonarqube.ws.Common.Component, org.sonarqube.ws.Common.Component.Builder, org.sonarqube.ws.Common.ComponentOrBuilder>(
-                  projects_,
-                  ((bitField0_ & 0x00000008) == 0x00000008),
-                  getParentForChildren(),
-                  isClean());
-          projects_ = null;
-        }
-        return projectsBuilder_;
-      }
-
-      private java.util.List<org.sonarqube.ws.Common.Component> components_ =
-        java.util.Collections.emptyList();
-      private void ensureComponentsIsMutable() {
-        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
-          components_ = new java.util.ArrayList<org.sonarqube.ws.Common.Component>(components_);
-          bitField0_ |= 0x00000010;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.sonarqube.ws.Common.Component, org.sonarqube.ws.Common.Component.Builder, org.sonarqube.ws.Common.ComponentOrBuilder> componentsBuilder_;
-
-      /**
-       * <code>repeated .sonarqube.ws.Component components = 5;</code>
-       */
-      public java.util.List<org.sonarqube.ws.Common.Component> getComponentsList() {
-        if (componentsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(components_);
-        } else {
-          return componentsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component components = 5;</code>
-       */
-      public int getComponentsCount() {
-        if (componentsBuilder_ == null) {
-          return components_.size();
-        } else {
-          return componentsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component components = 5;</code>
-       */
-      public org.sonarqube.ws.Common.Component getComponents(int index) {
-        if (componentsBuilder_ == null) {
-          return components_.get(index);
-        } else {
-          return componentsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component components = 5;</code>
-       */
-      public Builder setComponents(
-          int index, org.sonarqube.ws.Common.Component value) {
-        if (componentsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureComponentsIsMutable();
-          components_.set(index, value);
-          onChanged();
-        } else {
-          componentsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component components = 5;</code>
-       */
-      public Builder setComponents(
-          int index, org.sonarqube.ws.Common.Component.Builder builderForValue) {
-        if (componentsBuilder_ == null) {
-          ensureComponentsIsMutable();
-          components_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          componentsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component components = 5;</code>
-       */
-      public Builder addComponents(org.sonarqube.ws.Common.Component value) {
-        if (componentsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureComponentsIsMutable();
-          components_.add(value);
-          onChanged();
-        } else {
-          componentsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component components = 5;</code>
-       */
-      public Builder addComponents(
-          int index, org.sonarqube.ws.Common.Component value) {
-        if (componentsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureComponentsIsMutable();
-          components_.add(index, value);
-          onChanged();
-        } else {
-          componentsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component components = 5;</code>
-       */
-      public Builder addComponents(
-          org.sonarqube.ws.Common.Component.Builder builderForValue) {
-        if (componentsBuilder_ == null) {
-          ensureComponentsIsMutable();
-          components_.add(builderForValue.build());
-          onChanged();
-        } else {
-          componentsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component components = 5;</code>
-       */
-      public Builder addComponents(
-          int index, org.sonarqube.ws.Common.Component.Builder builderForValue) {
-        if (componentsBuilder_ == null) {
-          ensureComponentsIsMutable();
-          components_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          componentsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component components = 5;</code>
-       */
-      public Builder addAllComponents(
-          java.lang.Iterable<? extends org.sonarqube.ws.Common.Component> values) {
-        if (componentsBuilder_ == null) {
-          ensureComponentsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, components_);
-          onChanged();
-        } else {
-          componentsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component components = 5;</code>
-       */
-      public Builder clearComponents() {
-        if (componentsBuilder_ == null) {
-          components_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000010);
-          onChanged();
-        } else {
-          componentsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component components = 5;</code>
-       */
-      public Builder removeComponents(int index) {
-        if (componentsBuilder_ == null) {
-          ensureComponentsIsMutable();
-          components_.remove(index);
-          onChanged();
-        } else {
-          componentsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component components = 5;</code>
-       */
-      public org.sonarqube.ws.Common.Component.Builder getComponentsBuilder(
-          int index) {
-        return getComponentsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component components = 5;</code>
-       */
-      public org.sonarqube.ws.Common.ComponentOrBuilder getComponentsOrBuilder(
-          int index) {
-        if (componentsBuilder_ == null) {
-          return components_.get(index);  } else {
-          return componentsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component components = 5;</code>
-       */
-      public java.util.List<? extends org.sonarqube.ws.Common.ComponentOrBuilder> 
-           getComponentsOrBuilderList() {
-        if (componentsBuilder_ != null) {
-          return componentsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(components_);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component components = 5;</code>
-       */
-      public org.sonarqube.ws.Common.Component.Builder addComponentsBuilder() {
-        return getComponentsFieldBuilder().addBuilder(
-            org.sonarqube.ws.Common.Component.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component components = 5;</code>
-       */
-      public org.sonarqube.ws.Common.Component.Builder addComponentsBuilder(
-          int index) {
-        return getComponentsFieldBuilder().addBuilder(
-            index, org.sonarqube.ws.Common.Component.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Component components = 5;</code>
-       */
-      public java.util.List<org.sonarqube.ws.Common.Component.Builder> 
-           getComponentsBuilderList() {
-        return getComponentsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.sonarqube.ws.Common.Component, org.sonarqube.ws.Common.Component.Builder, org.sonarqube.ws.Common.ComponentOrBuilder> 
-          getComponentsFieldBuilder() {
-        if (componentsBuilder_ == null) {
-          componentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              org.sonarqube.ws.Common.Component, org.sonarqube.ws.Common.Component.Builder, org.sonarqube.ws.Common.ComponentOrBuilder>(
-                  components_,
-                  ((bitField0_ & 0x00000010) == 0x00000010),
-                  getParentForChildren(),
-                  isClean());
-          components_ = null;
-        }
-        return componentsBuilder_;
-      }
-
-      private java.util.List<org.sonarqube.ws.Common.Rule> rules_ =
-        java.util.Collections.emptyList();
-      private void ensureRulesIsMutable() {
-        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
-          rules_ = new java.util.ArrayList<org.sonarqube.ws.Common.Rule>(rules_);
-          bitField0_ |= 0x00000020;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.sonarqube.ws.Common.Rule, org.sonarqube.ws.Common.Rule.Builder, org.sonarqube.ws.Common.RuleOrBuilder> rulesBuilder_;
-
-      /**
-       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-       */
-      public java.util.List<org.sonarqube.ws.Common.Rule> getRulesList() {
-        if (rulesBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(rules_);
-        } else {
-          return rulesBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-       */
-      public int getRulesCount() {
-        if (rulesBuilder_ == null) {
-          return rules_.size();
-        } else {
-          return rulesBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-       */
-      public org.sonarqube.ws.Common.Rule getRules(int index) {
-        if (rulesBuilder_ == null) {
-          return rules_.get(index);
-        } else {
-          return rulesBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-       */
-      public Builder setRules(
-          int index, org.sonarqube.ws.Common.Rule value) {
-        if (rulesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureRulesIsMutable();
-          rules_.set(index, value);
-          onChanged();
-        } else {
-          rulesBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-       */
-      public Builder setRules(
-          int index, org.sonarqube.ws.Common.Rule.Builder builderForValue) {
-        if (rulesBuilder_ == null) {
-          ensureRulesIsMutable();
-          rules_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          rulesBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-       */
-      public Builder addRules(org.sonarqube.ws.Common.Rule value) {
-        if (rulesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureRulesIsMutable();
-          rules_.add(value);
-          onChanged();
-        } else {
-          rulesBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-       */
-      public Builder addRules(
-          int index, org.sonarqube.ws.Common.Rule value) {
-        if (rulesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureRulesIsMutable();
-          rules_.add(index, value);
-          onChanged();
-        } else {
-          rulesBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-       */
-      public Builder addRules(
-          org.sonarqube.ws.Common.Rule.Builder builderForValue) {
-        if (rulesBuilder_ == null) {
-          ensureRulesIsMutable();
-          rules_.add(builderForValue.build());
-          onChanged();
-        } else {
-          rulesBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-       */
-      public Builder addRules(
-          int index, org.sonarqube.ws.Common.Rule.Builder builderForValue) {
-        if (rulesBuilder_ == null) {
-          ensureRulesIsMutable();
-          rules_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          rulesBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-       */
-      public Builder addAllRules(
-          java.lang.Iterable<? extends org.sonarqube.ws.Common.Rule> values) {
-        if (rulesBuilder_ == null) {
-          ensureRulesIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, rules_);
-          onChanged();
-        } else {
-          rulesBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-       */
-      public Builder clearRules() {
-        if (rulesBuilder_ == null) {
-          rules_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000020);
-          onChanged();
-        } else {
-          rulesBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-       */
-      public Builder removeRules(int index) {
-        if (rulesBuilder_ == null) {
-          ensureRulesIsMutable();
-          rules_.remove(index);
-          onChanged();
-        } else {
-          rulesBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-       */
-      public org.sonarqube.ws.Common.Rule.Builder getRulesBuilder(
-          int index) {
-        return getRulesFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-       */
-      public org.sonarqube.ws.Common.RuleOrBuilder getRulesOrBuilder(
-          int index) {
-        if (rulesBuilder_ == null) {
-          return rules_.get(index);  } else {
-          return rulesBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-       */
-      public java.util.List<? extends org.sonarqube.ws.Common.RuleOrBuilder> 
-           getRulesOrBuilderList() {
-        if (rulesBuilder_ != null) {
-          return rulesBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(rules_);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-       */
-      public org.sonarqube.ws.Common.Rule.Builder addRulesBuilder() {
-        return getRulesFieldBuilder().addBuilder(
-            org.sonarqube.ws.Common.Rule.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-       */
-      public org.sonarqube.ws.Common.Rule.Builder addRulesBuilder(
-          int index) {
-        return getRulesFieldBuilder().addBuilder(
-            index, org.sonarqube.ws.Common.Rule.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
-       */
-      public java.util.List<org.sonarqube.ws.Common.Rule.Builder> 
-           getRulesBuilderList() {
-        return getRulesFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.sonarqube.ws.Common.Rule, org.sonarqube.ws.Common.Rule.Builder, org.sonarqube.ws.Common.RuleOrBuilder> 
-          getRulesFieldBuilder() {
-        if (rulesBuilder_ == null) {
-          rulesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              org.sonarqube.ws.Common.Rule, org.sonarqube.ws.Common.Rule.Builder, org.sonarqube.ws.Common.RuleOrBuilder>(
-                  rules_,
-                  ((bitField0_ & 0x00000020) == 0x00000020),
-                  getParentForChildren(),
-                  isClean());
-          rules_ = null;
-        }
-        return rulesBuilder_;
-      }
-
-      private java.util.List<org.sonarqube.ws.Common.User> users_ =
-        java.util.Collections.emptyList();
-      private void ensureUsersIsMutable() {
-        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
-          users_ = new java.util.ArrayList<org.sonarqube.ws.Common.User>(users_);
-          bitField0_ |= 0x00000040;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.sonarqube.ws.Common.User, org.sonarqube.ws.Common.User.Builder, org.sonarqube.ws.Common.UserOrBuilder> usersBuilder_;
-
-      /**
-       * <code>repeated .sonarqube.ws.User users = 7;</code>
-       */
-      public java.util.List<org.sonarqube.ws.Common.User> getUsersList() {
-        if (usersBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(users_);
-        } else {
-          return usersBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.User users = 7;</code>
-       */
-      public int getUsersCount() {
-        if (usersBuilder_ == null) {
-          return users_.size();
-        } else {
-          return usersBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.User users = 7;</code>
-       */
-      public org.sonarqube.ws.Common.User getUsers(int index) {
-        if (usersBuilder_ == null) {
-          return users_.get(index);
-        } else {
-          return usersBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.User users = 7;</code>
-       */
-      public Builder setUsers(
-          int index, org.sonarqube.ws.Common.User value) {
-        if (usersBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureUsersIsMutable();
-          users_.set(index, value);
-          onChanged();
-        } else {
-          usersBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.User users = 7;</code>
-       */
-      public Builder setUsers(
-          int index, org.sonarqube.ws.Common.User.Builder builderForValue) {
-        if (usersBuilder_ == null) {
-          ensureUsersIsMutable();
-          users_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          usersBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.User users = 7;</code>
-       */
-      public Builder addUsers(org.sonarqube.ws.Common.User value) {
-        if (usersBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureUsersIsMutable();
-          users_.add(value);
-          onChanged();
-        } else {
-          usersBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.User users = 7;</code>
-       */
-      public Builder addUsers(
-          int index, org.sonarqube.ws.Common.User value) {
-        if (usersBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureUsersIsMutable();
-          users_.add(index, value);
-          onChanged();
-        } else {
-          usersBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.User users = 7;</code>
-       */
-      public Builder addUsers(
-          org.sonarqube.ws.Common.User.Builder builderForValue) {
-        if (usersBuilder_ == null) {
-          ensureUsersIsMutable();
-          users_.add(builderForValue.build());
-          onChanged();
-        } else {
-          usersBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.User users = 7;</code>
-       */
-      public Builder addUsers(
-          int index, org.sonarqube.ws.Common.User.Builder builderForValue) {
-        if (usersBuilder_ == null) {
-          ensureUsersIsMutable();
-          users_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          usersBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.User users = 7;</code>
-       */
-      public Builder addAllUsers(
-          java.lang.Iterable<? extends org.sonarqube.ws.Common.User> values) {
-        if (usersBuilder_ == null) {
-          ensureUsersIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, users_);
-          onChanged();
-        } else {
-          usersBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.User users = 7;</code>
-       */
-      public Builder clearUsers() {
-        if (usersBuilder_ == null) {
-          users_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000040);
-          onChanged();
-        } else {
-          usersBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.User users = 7;</code>
-       */
-      public Builder removeUsers(int index) {
-        if (usersBuilder_ == null) {
-          ensureUsersIsMutable();
-          users_.remove(index);
-          onChanged();
-        } else {
-          usersBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.User users = 7;</code>
-       */
-      public org.sonarqube.ws.Common.User.Builder getUsersBuilder(
-          int index) {
-        return getUsersFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .sonarqube.ws.User users = 7;</code>
-       */
-      public org.sonarqube.ws.Common.UserOrBuilder getUsersOrBuilder(
-          int index) {
-        if (usersBuilder_ == null) {
-          return users_.get(index);  } else {
-          return usersBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.User users = 7;</code>
-       */
-      public java.util.List<? extends org.sonarqube.ws.Common.UserOrBuilder> 
-           getUsersOrBuilderList() {
-        if (usersBuilder_ != null) {
-          return usersBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(users_);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.User users = 7;</code>
-       */
-      public org.sonarqube.ws.Common.User.Builder addUsersBuilder() {
-        return getUsersFieldBuilder().addBuilder(
-            org.sonarqube.ws.Common.User.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .sonarqube.ws.User users = 7;</code>
-       */
-      public org.sonarqube.ws.Common.User.Builder addUsersBuilder(
-          int index) {
-        return getUsersFieldBuilder().addBuilder(
-            index, org.sonarqube.ws.Common.User.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .sonarqube.ws.User users = 7;</code>
-       */
-      public java.util.List<org.sonarqube.ws.Common.User.Builder> 
-           getUsersBuilderList() {
-        return getUsersFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.sonarqube.ws.Common.User, org.sonarqube.ws.Common.User.Builder, org.sonarqube.ws.Common.UserOrBuilder> 
-          getUsersFieldBuilder() {
-        if (usersBuilder_ == null) {
-          usersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              org.sonarqube.ws.Common.User, org.sonarqube.ws.Common.User.Builder, org.sonarqube.ws.Common.UserOrBuilder>(
-                  users_,
-                  ((bitField0_ & 0x00000040) == 0x00000040),
-                  getParentForChildren(),
-                  isClean());
-          users_ = null;
-        }
-        return usersBuilder_;
-      }
-
-      // @@protoc_insertion_point(builder_scope:sonarqube.ws.issues.Search)
-    }
-
-    static {
-      defaultInstance = new Search(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:sonarqube.ws.issues.Search)
-  }
-
-  public interface IssueOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:sonarqube.ws.issues.Issue)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>optional string key = 1;</code>
-     */
-    boolean hasKey();
-    /**
-     * <code>optional string key = 1;</code>
-     */
-    java.lang.String getKey();
-    /**
-     * <code>optional string key = 1;</code>
-     */
-    com.google.protobuf.ByteString
-        getKeyBytes();
-
-    /**
-     * <code>optional string rule = 2;</code>
-     */
-    boolean hasRule();
-    /**
-     * <code>optional string rule = 2;</code>
-     */
-    java.lang.String getRule();
-    /**
-     * <code>optional string rule = 2;</code>
-     */
-    com.google.protobuf.ByteString
-        getRuleBytes();
-
-    /**
-     * <code>optional string component = 3;</code>
-     */
-    boolean hasComponent();
-    /**
-     * <code>optional string component = 3;</code>
-     */
-    java.lang.String getComponent();
-    /**
-     * <code>optional string component = 3;</code>
-     */
-    com.google.protobuf.ByteString
-        getComponentBytes();
-
-    /**
-     * <code>optional int32 componentId = 4;</code>
-     */
-    boolean hasComponentId();
-    /**
-     * <code>optional int32 componentId = 4;</code>
-     */
-    int getComponentId();
-
-    /**
-     * <code>optional string project = 5;</code>
-     */
-    boolean hasProject();
-    /**
-     * <code>optional string project = 5;</code>
-     */
-    java.lang.String getProject();
-    /**
-     * <code>optional string project = 5;</code>
-     */
-    com.google.protobuf.ByteString
-        getProjectBytes();
-
-    /**
-     * <code>optional string subProject = 6;</code>
-     */
-    boolean hasSubProject();
-    /**
-     * <code>optional string subProject = 6;</code>
-     */
-    java.lang.String getSubProject();
-    /**
-     * <code>optional string subProject = 6;</code>
-     */
-    com.google.protobuf.ByteString
-        getSubProjectBytes();
-
-    /**
-     * <code>optional int32 line = 7;</code>
-     */
-    boolean hasLine();
-    /**
-     * <code>optional int32 line = 7;</code>
-     */
-    int getLine();
-
-    /**
-     * <code>optional string resolution = 8;</code>
-     */
-    boolean hasResolution();
-    /**
-     * <code>optional string resolution = 8;</code>
-     */
-    java.lang.String getResolution();
-    /**
-     * <code>optional string resolution = 8;</code>
-     */
-    com.google.protobuf.ByteString
-        getResolutionBytes();
-
-    /**
-     * <code>optional string status = 9;</code>
-     */
-    boolean hasStatus();
-    /**
-     * <code>optional string status = 9;</code>
-     */
-    java.lang.String getStatus();
-    /**
-     * <code>optional string status = 9;</code>
-     */
-    com.google.protobuf.ByteString
-        getStatusBytes();
-
-    /**
-     * <code>optional string message = 10;</code>
-     */
-    boolean hasMessage();
-    /**
-     * <code>optional string message = 10;</code>
-     */
-    java.lang.String getMessage();
-    /**
-     * <code>optional string message = 10;</code>
-     */
-    com.google.protobuf.ByteString
-        getMessageBytes();
-
-    /**
-     * <code>optional string debt = 11;</code>
-     */
-    boolean hasDebt();
-    /**
-     * <code>optional string debt = 11;</code>
-     */
-    java.lang.String getDebt();
-    /**
-     * <code>optional string debt = 11;</code>
-     */
-    com.google.protobuf.ByteString
-        getDebtBytes();
-
-    /**
-     * <code>optional string assignee = 12;</code>
-     */
-    boolean hasAssignee();
-    /**
-     * <code>optional string assignee = 12;</code>
-     */
-    java.lang.String getAssignee();
-    /**
-     * <code>optional string assignee = 12;</code>
-     */
-    com.google.protobuf.ByteString
-        getAssigneeBytes();
-
-    /**
-     * <code>optional string reporter = 13;</code>
-     */
-    boolean hasReporter();
-    /**
-     * <code>optional string reporter = 13;</code>
-     */
-    java.lang.String getReporter();
-    /**
-     * <code>optional string reporter = 13;</code>
-     */
-    com.google.protobuf.ByteString
-        getReporterBytes();
-
-    /**
-     * <code>optional string scmAuthor = 14;</code>
-     */
-    boolean hasScmAuthor();
-    /**
-     * <code>optional string scmAuthor = 14;</code>
-     */
-    java.lang.String getScmAuthor();
-    /**
-     * <code>optional string scmAuthor = 14;</code>
-     */
-    com.google.protobuf.ByteString
-        getScmAuthorBytes();
-
-    /**
-     * <code>optional string actionPlan = 15;</code>
-     */
-    boolean hasActionPlan();
-    /**
-     * <code>optional string actionPlan = 15;</code>
-     */
-    java.lang.String getActionPlan();
-    /**
-     * <code>optional string actionPlan = 15;</code>
-     */
-    com.google.protobuf.ByteString
-        getActionPlanBytes();
-
-    /**
-     * <code>optional string actionPlanName = 16;</code>
-     */
-    boolean hasActionPlanName();
-    /**
-     * <code>optional string actionPlanName = 16;</code>
-     */
-    java.lang.String getActionPlanName();
-    /**
-     * <code>optional string actionPlanName = 16;</code>
-     */
-    com.google.protobuf.ByteString
-        getActionPlanNameBytes();
-
-    /**
-     * <code>optional string attr = 17;</code>
-     */
-    boolean hasAttr();
-    /**
-     * <code>optional string attr = 17;</code>
-     */
-    java.lang.String getAttr();
-    /**
-     * <code>optional string attr = 17;</code>
-     */
-    com.google.protobuf.ByteString
-        getAttrBytes();
-
-    /**
-     * <code>repeated string tags = 18;</code>
-     */
-    com.google.protobuf.ProtocolStringList
-        getTagsList();
-    /**
-     * <code>repeated string tags = 18;</code>
-     */
-    int getTagsCount();
-    /**
-     * <code>repeated string tags = 18;</code>
-     */
-    java.lang.String getTags(int index);
-    /**
-     * <code>repeated string tags = 18;</code>
-     */
-    com.google.protobuf.ByteString
-        getTagsBytes(int index);
-
-    /**
-     * <code>repeated string transitions = 19;</code>
-     */
-    com.google.protobuf.ProtocolStringList
-        getTransitionsList();
-    /**
-     * <code>repeated string transitions = 19;</code>
-     */
-    int getTransitionsCount();
-    /**
-     * <code>repeated string transitions = 19;</code>
-     */
-    java.lang.String getTransitions(int index);
-    /**
-     * <code>repeated string transitions = 19;</code>
-     */
-    com.google.protobuf.ByteString
-        getTransitionsBytes(int index);
-
-    /**
-     * <code>repeated string actions = 20;</code>
-     */
-    com.google.protobuf.ProtocolStringList
-        getActionsList();
-    /**
-     * <code>repeated string actions = 20;</code>
-     */
-    int getActionsCount();
-    /**
-     * <code>repeated string actions = 20;</code>
-     */
-    java.lang.String getActions(int index);
-    /**
-     * <code>repeated string actions = 20;</code>
-     */
-    com.google.protobuf.ByteString
-        getActionsBytes(int index);
-
-    /**
-     * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-     */
-    java.util.List<org.sonarqube.ws.Issues.Comment> 
-        getCommentsList();
-    /**
-     * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-     */
-    org.sonarqube.ws.Issues.Comment getComments(int index);
-    /**
-     * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-     */
-    int getCommentsCount();
-    /**
-     * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-     */
-    java.util.List<? extends org.sonarqube.ws.Issues.CommentOrBuilder> 
-        getCommentsOrBuilderList();
-    /**
-     * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-     */
-    org.sonarqube.ws.Issues.CommentOrBuilder getCommentsOrBuilder(
-        int index);
-
-    /**
-     * <code>optional string creationDate = 22;</code>
-     */
-    boolean hasCreationDate();
-    /**
-     * <code>optional string creationDate = 22;</code>
-     */
-    java.lang.String getCreationDate();
-    /**
-     * <code>optional string creationDate = 22;</code>
-     */
-    com.google.protobuf.ByteString
-        getCreationDateBytes();
-
-    /**
-     * <code>optional string updateDate = 23;</code>
-     */
-    boolean hasUpdateDate();
-    /**
-     * <code>optional string updateDate = 23;</code>
-     */
-    java.lang.String getUpdateDate();
-    /**
-     * <code>optional string updateDate = 23;</code>
-     */
-    com.google.protobuf.ByteString
-        getUpdateDateBytes();
-
-    /**
-     * <code>optional string fUpdateAge = 24;</code>
-     */
-    boolean hasFUpdateAge();
-    /**
-     * <code>optional string fUpdateAge = 24;</code>
-     */
-    java.lang.String getFUpdateAge();
-    /**
-     * <code>optional string fUpdateAge = 24;</code>
-     */
-    com.google.protobuf.ByteString
-        getFUpdateAgeBytes();
-
-    /**
-     * <code>optional string closeDate = 25;</code>
-     */
-    boolean hasCloseDate();
-    /**
-     * <code>optional string closeDate = 25;</code>
-     */
-    java.lang.String getCloseDate();
-    /**
-     * <code>optional string closeDate = 25;</code>
-     */
-    com.google.protobuf.ByteString
-        getCloseDateBytes();
-  }
-  /**
-   * Protobuf type {@code sonarqube.ws.issues.Issue}
-   */
-  public static final class Issue extends
-      com.google.protobuf.GeneratedMessage implements
-      // @@protoc_insertion_point(message_implements:sonarqube.ws.issues.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;
-              key_ = bs;
-              break;
-            }
-            case 18: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000002;
-              rule_ = bs;
-              break;
-            }
-            case 26: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000004;
-              component_ = bs;
-              break;
-            }
-            case 32: {
-              bitField0_ |= 0x00000008;
-              componentId_ = input.readInt32();
-              break;
-            }
-            case 42: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000010;
-              project_ = bs;
-              break;
-            }
-            case 50: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000020;
-              subProject_ = bs;
-              break;
-            }
-            case 56: {
-              bitField0_ |= 0x00000040;
-              line_ = input.readInt32();
-              break;
-            }
-            case 66: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000080;
-              resolution_ = bs;
-              break;
-            }
-            case 74: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000100;
-              status_ = bs;
-              break;
-            }
-            case 82: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000200;
-              message_ = bs;
-              break;
-            }
-            case 90: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000400;
-              debt_ = bs;
-              break;
-            }
-            case 98: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000800;
-              assignee_ = bs;
-              break;
-            }
-            case 106: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00001000;
-              reporter_ = bs;
-              break;
-            }
-            case 114: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00002000;
-              scmAuthor_ = bs;
-              break;
-            }
-            case 122: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00004000;
-              actionPlan_ = bs;
-              break;
-            }
-            case 130: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00008000;
-              actionPlanName_ = bs;
-              break;
-            }
-            case 138: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00010000;
-              attr_ = bs;
-              break;
-            }
-            case 146: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              if (!((mutable_bitField0_ & 0x00020000) == 0x00020000)) {
-                tags_ = new com.google.protobuf.LazyStringArrayList();
-                mutable_bitField0_ |= 0x00020000;
-              }
-              tags_.add(bs);
-              break;
-            }
-            case 154: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              if (!((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
-                transitions_ = new com.google.protobuf.LazyStringArrayList();
-                mutable_bitField0_ |= 0x00040000;
-              }
-              transitions_.add(bs);
-              break;
-            }
-            case 162: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              if (!((mutable_bitField0_ & 0x00080000) == 0x00080000)) {
-                actions_ = new com.google.protobuf.LazyStringArrayList();
-                mutable_bitField0_ |= 0x00080000;
-              }
-              actions_.add(bs);
-              break;
-            }
-            case 170: {
-              if (!((mutable_bitField0_ & 0x00100000) == 0x00100000)) {
-                comments_ = new java.util.ArrayList<org.sonarqube.ws.Issues.Comment>();
-                mutable_bitField0_ |= 0x00100000;
-              }
-              comments_.add(input.readMessage(org.sonarqube.ws.Issues.Comment.PARSER, extensionRegistry));
-              break;
-            }
-            case 178: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00020000;
-              creationDate_ = bs;
-              break;
-            }
-            case 186: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00040000;
-              updateDate_ = bs;
-              break;
-            }
-            case 194: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00080000;
-              fUpdateAge_ = bs;
-              break;
-            }
-            case 202: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00100000;
-              closeDate_ = 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_ & 0x00020000) == 0x00020000)) {
-          tags_ = tags_.getUnmodifiableView();
-        }
-        if (((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
-          transitions_ = transitions_.getUnmodifiableView();
-        }
-        if (((mutable_bitField0_ & 0x00080000) == 0x00080000)) {
-          actions_ = actions_.getUnmodifiableView();
-        }
-        if (((mutable_bitField0_ & 0x00100000) == 0x00100000)) {
-          comments_ = java.util.Collections.unmodifiableList(comments_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Issue_descriptor;
-    }
-
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Issue_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              org.sonarqube.ws.Issues.Issue.class, org.sonarqube.ws.Issues.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 KEY_FIELD_NUMBER = 1;
-    private java.lang.Object key_;
-    /**
-     * <code>optional string key = 1;</code>
-     */
-    public boolean hasKey() {
-      return ((bitField0_ & 0x00000001) == 0x00000001);
-    }
-    /**
-     * <code>optional string key = 1;</code>
-     */
-    public java.lang.String getKey() {
-      java.lang.Object ref = key_;
-      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()) {
-          key_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string key = 1;</code>
-     */
-    public com.google.protobuf.ByteString
-        getKeyBytes() {
-      java.lang.Object ref = key_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        key_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int RULE_FIELD_NUMBER = 2;
-    private java.lang.Object rule_;
-    /**
-     * <code>optional string rule = 2;</code>
-     */
-    public boolean hasRule() {
-      return ((bitField0_ & 0x00000002) == 0x00000002);
-    }
-    /**
-     * <code>optional string rule = 2;</code>
-     */
-    public java.lang.String getRule() {
-      java.lang.Object ref = rule_;
-      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()) {
-          rule_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string rule = 2;</code>
-     */
-    public com.google.protobuf.ByteString
-        getRuleBytes() {
-      java.lang.Object ref = rule_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        rule_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int COMPONENT_FIELD_NUMBER = 3;
-    private java.lang.Object component_;
-    /**
-     * <code>optional string component = 3;</code>
-     */
-    public boolean hasComponent() {
-      return ((bitField0_ & 0x00000004) == 0x00000004);
-    }
-    /**
-     * <code>optional string component = 3;</code>
-     */
-    public java.lang.String getComponent() {
-      java.lang.Object ref = component_;
-      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()) {
-          component_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string component = 3;</code>
-     */
-    public com.google.protobuf.ByteString
-        getComponentBytes() {
-      java.lang.Object ref = component_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        component_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int COMPONENTID_FIELD_NUMBER = 4;
-    private int componentId_;
-    /**
-     * <code>optional int32 componentId = 4;</code>
-     */
-    public boolean hasComponentId() {
-      return ((bitField0_ & 0x00000008) == 0x00000008);
-    }
-    /**
-     * <code>optional int32 componentId = 4;</code>
-     */
-    public int getComponentId() {
-      return componentId_;
-    }
-
-    public static final int PROJECT_FIELD_NUMBER = 5;
-    private java.lang.Object project_;
-    /**
-     * <code>optional string project = 5;</code>
-     */
-    public boolean hasProject() {
-      return ((bitField0_ & 0x00000010) == 0x00000010);
-    }
-    /**
-     * <code>optional string project = 5;</code>
-     */
-    public java.lang.String getProject() {
-      java.lang.Object ref = project_;
-      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()) {
-          project_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string project = 5;</code>
-     */
-    public com.google.protobuf.ByteString
-        getProjectBytes() {
-      java.lang.Object ref = project_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        project_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int SUBPROJECT_FIELD_NUMBER = 6;
-    private java.lang.Object subProject_;
-    /**
-     * <code>optional string subProject = 6;</code>
-     */
-    public boolean hasSubProject() {
-      return ((bitField0_ & 0x00000020) == 0x00000020);
-    }
-    /**
-     * <code>optional string subProject = 6;</code>
-     */
-    public java.lang.String getSubProject() {
-      java.lang.Object ref = subProject_;
-      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()) {
-          subProject_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string subProject = 6;</code>
-     */
-    public com.google.protobuf.ByteString
-        getSubProjectBytes() {
-      java.lang.Object ref = subProject_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        subProject_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int LINE_FIELD_NUMBER = 7;
-    private int line_;
-    /**
-     * <code>optional int32 line = 7;</code>
-     */
-    public boolean hasLine() {
-      return ((bitField0_ & 0x00000040) == 0x00000040);
-    }
-    /**
-     * <code>optional int32 line = 7;</code>
-     */
-    public int getLine() {
-      return line_;
-    }
-
-    public static final int RESOLUTION_FIELD_NUMBER = 8;
-    private java.lang.Object resolution_;
-    /**
-     * <code>optional string resolution = 8;</code>
-     */
-    public boolean hasResolution() {
-      return ((bitField0_ & 0x00000080) == 0x00000080);
-    }
-    /**
-     * <code>optional string resolution = 8;</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 = 8;</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 = 9;
-    private java.lang.Object status_;
-    /**
-     * <code>optional string status = 9;</code>
-     */
-    public boolean hasStatus() {
-      return ((bitField0_ & 0x00000100) == 0x00000100);
-    }
-    /**
-     * <code>optional string status = 9;</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 = 9;</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 MESSAGE_FIELD_NUMBER = 10;
-    private java.lang.Object message_;
-    /**
-     * <code>optional string message = 10;</code>
-     */
-    public boolean hasMessage() {
-      return ((bitField0_ & 0x00000200) == 0x00000200);
-    }
-    /**
-     * <code>optional string message = 10;</code>
-     */
-    public java.lang.String getMessage() {
-      java.lang.Object ref = message_;
-      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()) {
-          message_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string message = 10;</code>
-     */
-    public com.google.protobuf.ByteString
-        getMessageBytes() {
-      java.lang.Object ref = message_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        message_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int DEBT_FIELD_NUMBER = 11;
-    private java.lang.Object debt_;
-    /**
-     * <code>optional string debt = 11;</code>
-     */
-    public boolean hasDebt() {
-      return ((bitField0_ & 0x00000400) == 0x00000400);
-    }
-    /**
-     * <code>optional string debt = 11;</code>
-     */
-    public java.lang.String getDebt() {
-      java.lang.Object ref = debt_;
-      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()) {
-          debt_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string debt = 11;</code>
-     */
-    public com.google.protobuf.ByteString
-        getDebtBytes() {
-      java.lang.Object ref = debt_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        debt_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int ASSIGNEE_FIELD_NUMBER = 12;
-    private java.lang.Object assignee_;
-    /**
-     * <code>optional string assignee = 12;</code>
-     */
-    public boolean hasAssignee() {
-      return ((bitField0_ & 0x00000800) == 0x00000800);
-    }
-    /**
-     * <code>optional string assignee = 12;</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 = 12;</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 REPORTER_FIELD_NUMBER = 13;
-    private java.lang.Object reporter_;
-    /**
-     * <code>optional string reporter = 13;</code>
-     */
-    public boolean hasReporter() {
-      return ((bitField0_ & 0x00001000) == 0x00001000);
-    }
-    /**
-     * <code>optional string reporter = 13;</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 = 13;</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 SCMAUTHOR_FIELD_NUMBER = 14;
-    private java.lang.Object scmAuthor_;
-    /**
-     * <code>optional string scmAuthor = 14;</code>
-     */
-    public boolean hasScmAuthor() {
-      return ((bitField0_ & 0x00002000) == 0x00002000);
-    }
-    /**
-     * <code>optional string scmAuthor = 14;</code>
-     */
-    public java.lang.String getScmAuthor() {
-      java.lang.Object ref = scmAuthor_;
-      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()) {
-          scmAuthor_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string scmAuthor = 14;</code>
-     */
-    public com.google.protobuf.ByteString
-        getScmAuthorBytes() {
-      java.lang.Object ref = scmAuthor_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        scmAuthor_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int ACTIONPLAN_FIELD_NUMBER = 15;
-    private java.lang.Object actionPlan_;
-    /**
-     * <code>optional string actionPlan = 15;</code>
-     */
-    public boolean hasActionPlan() {
-      return ((bitField0_ & 0x00004000) == 0x00004000);
-    }
-    /**
-     * <code>optional string actionPlan = 15;</code>
-     */
-    public java.lang.String getActionPlan() {
-      java.lang.Object ref = actionPlan_;
-      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()) {
-          actionPlan_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string actionPlan = 15;</code>
-     */
-    public com.google.protobuf.ByteString
-        getActionPlanBytes() {
-      java.lang.Object ref = actionPlan_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        actionPlan_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int ACTIONPLANNAME_FIELD_NUMBER = 16;
-    private java.lang.Object actionPlanName_;
-    /**
-     * <code>optional string actionPlanName = 16;</code>
-     */
-    public boolean hasActionPlanName() {
-      return ((bitField0_ & 0x00008000) == 0x00008000);
-    }
-    /**
-     * <code>optional string actionPlanName = 16;</code>
-     */
-    public java.lang.String getActionPlanName() {
-      java.lang.Object ref = actionPlanName_;
-      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()) {
-          actionPlanName_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string actionPlanName = 16;</code>
-     */
-    public com.google.protobuf.ByteString
-        getActionPlanNameBytes() {
-      java.lang.Object ref = actionPlanName_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        actionPlanName_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int ATTR_FIELD_NUMBER = 17;
-    private java.lang.Object attr_;
-    /**
-     * <code>optional string attr = 17;</code>
-     */
-    public boolean hasAttr() {
-      return ((bitField0_ & 0x00010000) == 0x00010000);
-    }
-    /**
-     * <code>optional string attr = 17;</code>
-     */
-    public java.lang.String getAttr() {
-      java.lang.Object ref = attr_;
-      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()) {
-          attr_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string attr = 17;</code>
-     */
-    public com.google.protobuf.ByteString
-        getAttrBytes() {
-      java.lang.Object ref = attr_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        attr_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int TAGS_FIELD_NUMBER = 18;
-    private com.google.protobuf.LazyStringList tags_;
-    /**
-     * <code>repeated string tags = 18;</code>
-     */
-    public com.google.protobuf.ProtocolStringList
-        getTagsList() {
-      return tags_;
-    }
-    /**
-     * <code>repeated string tags = 18;</code>
-     */
-    public int getTagsCount() {
-      return tags_.size();
-    }
-    /**
-     * <code>repeated string tags = 18;</code>
-     */
-    public java.lang.String getTags(int index) {
-      return tags_.get(index);
-    }
-    /**
-     * <code>repeated string tags = 18;</code>
-     */
-    public com.google.protobuf.ByteString
-        getTagsBytes(int index) {
-      return tags_.getByteString(index);
-    }
-
-    public static final int TRANSITIONS_FIELD_NUMBER = 19;
-    private com.google.protobuf.LazyStringList transitions_;
-    /**
-     * <code>repeated string transitions = 19;</code>
-     */
-    public com.google.protobuf.ProtocolStringList
-        getTransitionsList() {
-      return transitions_;
-    }
-    /**
-     * <code>repeated string transitions = 19;</code>
-     */
-    public int getTransitionsCount() {
-      return transitions_.size();
-    }
-    /**
-     * <code>repeated string transitions = 19;</code>
-     */
-    public java.lang.String getTransitions(int index) {
-      return transitions_.get(index);
-    }
-    /**
-     * <code>repeated string transitions = 19;</code>
-     */
-    public com.google.protobuf.ByteString
-        getTransitionsBytes(int index) {
-      return transitions_.getByteString(index);
-    }
-
-    public static final int ACTIONS_FIELD_NUMBER = 20;
-    private com.google.protobuf.LazyStringList actions_;
-    /**
-     * <code>repeated string actions = 20;</code>
-     */
-    public com.google.protobuf.ProtocolStringList
-        getActionsList() {
-      return actions_;
-    }
-    /**
-     * <code>repeated string actions = 20;</code>
-     */
-    public int getActionsCount() {
-      return actions_.size();
-    }
-    /**
-     * <code>repeated string actions = 20;</code>
-     */
-    public java.lang.String getActions(int index) {
-      return actions_.get(index);
-    }
-    /**
-     * <code>repeated string actions = 20;</code>
-     */
-    public com.google.protobuf.ByteString
-        getActionsBytes(int index) {
-      return actions_.getByteString(index);
-    }
-
-    public static final int COMMENTS_FIELD_NUMBER = 21;
-    private java.util.List<org.sonarqube.ws.Issues.Comment> comments_;
-    /**
-     * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-     */
-    public java.util.List<org.sonarqube.ws.Issues.Comment> getCommentsList() {
-      return comments_;
-    }
-    /**
-     * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-     */
-    public java.util.List<? extends org.sonarqube.ws.Issues.CommentOrBuilder> 
-        getCommentsOrBuilderList() {
-      return comments_;
-    }
-    /**
-     * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-     */
-    public int getCommentsCount() {
-      return comments_.size();
-    }
-    /**
-     * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-     */
-    public org.sonarqube.ws.Issues.Comment getComments(int index) {
-      return comments_.get(index);
-    }
-    /**
-     * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-     */
-    public org.sonarqube.ws.Issues.CommentOrBuilder getCommentsOrBuilder(
-        int index) {
-      return comments_.get(index);
-    }
-
-    public static final int CREATIONDATE_FIELD_NUMBER = 22;
-    private java.lang.Object creationDate_;
-    /**
-     * <code>optional string creationDate = 22;</code>
-     */
-    public boolean hasCreationDate() {
-      return ((bitField0_ & 0x00020000) == 0x00020000);
-    }
-    /**
-     * <code>optional string creationDate = 22;</code>
-     */
-    public java.lang.String getCreationDate() {
-      java.lang.Object ref = creationDate_;
-      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()) {
-          creationDate_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string creationDate = 22;</code>
-     */
-    public com.google.protobuf.ByteString
-        getCreationDateBytes() {
-      java.lang.Object ref = creationDate_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        creationDate_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int UPDATEDATE_FIELD_NUMBER = 23;
-    private java.lang.Object updateDate_;
-    /**
-     * <code>optional string updateDate = 23;</code>
-     */
-    public boolean hasUpdateDate() {
-      return ((bitField0_ & 0x00040000) == 0x00040000);
-    }
-    /**
-     * <code>optional string updateDate = 23;</code>
-     */
-    public java.lang.String getUpdateDate() {
-      java.lang.Object ref = updateDate_;
-      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()) {
-          updateDate_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string updateDate = 23;</code>
-     */
-    public com.google.protobuf.ByteString
-        getUpdateDateBytes() {
-      java.lang.Object ref = updateDate_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        updateDate_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int FUPDATEAGE_FIELD_NUMBER = 24;
-    private java.lang.Object fUpdateAge_;
-    /**
-     * <code>optional string fUpdateAge = 24;</code>
-     */
-    public boolean hasFUpdateAge() {
-      return ((bitField0_ & 0x00080000) == 0x00080000);
-    }
-    /**
-     * <code>optional string fUpdateAge = 24;</code>
-     */
-    public java.lang.String getFUpdateAge() {
-      java.lang.Object ref = fUpdateAge_;
-      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()) {
-          fUpdateAge_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string fUpdateAge = 24;</code>
-     */
-    public com.google.protobuf.ByteString
-        getFUpdateAgeBytes() {
-      java.lang.Object ref = fUpdateAge_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        fUpdateAge_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int CLOSEDATE_FIELD_NUMBER = 25;
-    private java.lang.Object closeDate_;
-    /**
-     * <code>optional string closeDate = 25;</code>
-     */
-    public boolean hasCloseDate() {
-      return ((bitField0_ & 0x00100000) == 0x00100000);
-    }
-    /**
-     * <code>optional string closeDate = 25;</code>
-     */
-    public java.lang.String getCloseDate() {
-      java.lang.Object ref = closeDate_;
-      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()) {
-          closeDate_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string closeDate = 25;</code>
-     */
-    public com.google.protobuf.ByteString
-        getCloseDateBytes() {
-      java.lang.Object ref = closeDate_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        closeDate_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    private void initFields() {
-      key_ = "";
-      rule_ = "";
-      component_ = "";
-      componentId_ = 0;
-      project_ = "";
-      subProject_ = "";
-      line_ = 0;
-      resolution_ = "";
-      status_ = "";
-      message_ = "";
-      debt_ = "";
-      assignee_ = "";
-      reporter_ = "";
-      scmAuthor_ = "";
-      actionPlan_ = "";
-      actionPlanName_ = "";
-      attr_ = "";
-      tags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-      transitions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-      actions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-      comments_ = java.util.Collections.emptyList();
-      creationDate_ = "";
-      updateDate_ = "";
-      fUpdateAge_ = "";
-      closeDate_ = "";
-    }
-    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, getKeyBytes());
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeBytes(2, getRuleBytes());
-      }
-      if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        output.writeBytes(3, getComponentBytes());
-      }
-      if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        output.writeInt32(4, componentId_);
-      }
-      if (((bitField0_ & 0x00000010) == 0x00000010)) {
-        output.writeBytes(5, getProjectBytes());
-      }
-      if (((bitField0_ & 0x00000020) == 0x00000020)) {
-        output.writeBytes(6, getSubProjectBytes());
-      }
-      if (((bitField0_ & 0x00000040) == 0x00000040)) {
-        output.writeInt32(7, line_);
-      }
-      if (((bitField0_ & 0x00000080) == 0x00000080)) {
-        output.writeBytes(8, getResolutionBytes());
-      }
-      if (((bitField0_ & 0x00000100) == 0x00000100)) {
-        output.writeBytes(9, getStatusBytes());
-      }
-      if (((bitField0_ & 0x00000200) == 0x00000200)) {
-        output.writeBytes(10, getMessageBytes());
-      }
-      if (((bitField0_ & 0x00000400) == 0x00000400)) {
-        output.writeBytes(11, getDebtBytes());
-      }
-      if (((bitField0_ & 0x00000800) == 0x00000800)) {
-        output.writeBytes(12, getAssigneeBytes());
-      }
-      if (((bitField0_ & 0x00001000) == 0x00001000)) {
-        output.writeBytes(13, getReporterBytes());
-      }
-      if (((bitField0_ & 0x00002000) == 0x00002000)) {
-        output.writeBytes(14, getScmAuthorBytes());
-      }
-      if (((bitField0_ & 0x00004000) == 0x00004000)) {
-        output.writeBytes(15, getActionPlanBytes());
-      }
-      if (((bitField0_ & 0x00008000) == 0x00008000)) {
-        output.writeBytes(16, getActionPlanNameBytes());
-      }
-      if (((bitField0_ & 0x00010000) == 0x00010000)) {
-        output.writeBytes(17, getAttrBytes());
-      }
-      for (int i = 0; i < tags_.size(); i++) {
-        output.writeBytes(18, tags_.getByteString(i));
-      }
-      for (int i = 0; i < transitions_.size(); i++) {
-        output.writeBytes(19, transitions_.getByteString(i));
-      }
-      for (int i = 0; i < actions_.size(); i++) {
-        output.writeBytes(20, actions_.getByteString(i));
-      }
-      for (int i = 0; i < comments_.size(); i++) {
-        output.writeMessage(21, comments_.get(i));
-      }
-      if (((bitField0_ & 0x00020000) == 0x00020000)) {
-        output.writeBytes(22, getCreationDateBytes());
-      }
-      if (((bitField0_ & 0x00040000) == 0x00040000)) {
-        output.writeBytes(23, getUpdateDateBytes());
-      }
-      if (((bitField0_ & 0x00080000) == 0x00080000)) {
-        output.writeBytes(24, getFUpdateAgeBytes());
-      }
-      if (((bitField0_ & 0x00100000) == 0x00100000)) {
-        output.writeBytes(25, getCloseDateBytes());
-      }
-      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, getKeyBytes());
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(2, getRuleBytes());
-      }
-      if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(3, getComponentBytes());
-      }
-      if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(4, componentId_);
-      }
-      if (((bitField0_ & 0x00000010) == 0x00000010)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(5, getProjectBytes());
-      }
-      if (((bitField0_ & 0x00000020) == 0x00000020)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(6, getSubProjectBytes());
-      }
-      if (((bitField0_ & 0x00000040) == 0x00000040)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(7, line_);
-      }
-      if (((bitField0_ & 0x00000080) == 0x00000080)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(8, getResolutionBytes());
-      }
-      if (((bitField0_ & 0x00000100) == 0x00000100)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(9, getStatusBytes());
-      }
-      if (((bitField0_ & 0x00000200) == 0x00000200)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(10, getMessageBytes());
-      }
-      if (((bitField0_ & 0x00000400) == 0x00000400)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(11, getDebtBytes());
-      }
-      if (((bitField0_ & 0x00000800) == 0x00000800)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(12, getAssigneeBytes());
-      }
-      if (((bitField0_ & 0x00001000) == 0x00001000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(13, getReporterBytes());
-      }
-      if (((bitField0_ & 0x00002000) == 0x00002000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(14, getScmAuthorBytes());
-      }
-      if (((bitField0_ & 0x00004000) == 0x00004000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(15, getActionPlanBytes());
-      }
-      if (((bitField0_ & 0x00008000) == 0x00008000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(16, getActionPlanNameBytes());
-      }
-      if (((bitField0_ & 0x00010000) == 0x00010000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(17, getAttrBytes());
-      }
-      {
-        int dataSize = 0;
-        for (int i = 0; i < tags_.size(); i++) {
-          dataSize += com.google.protobuf.CodedOutputStream
-            .computeBytesSizeNoTag(tags_.getByteString(i));
-        }
-        size += dataSize;
-        size += 2 * getTagsList().size();
-      }
-      {
-        int dataSize = 0;
-        for (int i = 0; i < transitions_.size(); i++) {
-          dataSize += com.google.protobuf.CodedOutputStream
-            .computeBytesSizeNoTag(transitions_.getByteString(i));
-        }
-        size += dataSize;
-        size += 2 * getTransitionsList().size();
-      }
-      {
-        int dataSize = 0;
-        for (int i = 0; i < actions_.size(); i++) {
-          dataSize += com.google.protobuf.CodedOutputStream
-            .computeBytesSizeNoTag(actions_.getByteString(i));
-        }
-        size += dataSize;
-        size += 2 * getActionsList().size();
-      }
-      for (int i = 0; i < comments_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(21, comments_.get(i));
-      }
-      if (((bitField0_ & 0x00020000) == 0x00020000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(22, getCreationDateBytes());
-      }
-      if (((bitField0_ & 0x00040000) == 0x00040000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(23, getUpdateDateBytes());
-      }
-      if (((bitField0_ & 0x00080000) == 0x00080000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(24, getFUpdateAgeBytes());
-      }
-      if (((bitField0_ & 0x00100000) == 0x00100000)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(25, getCloseDateBytes());
-      }
-      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.sonarqube.ws.Issues.Issue parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonarqube.ws.Issues.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.sonarqube.ws.Issues.Issue parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonarqube.ws.Issues.Issue parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Issues.Issue parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonarqube.ws.Issues.Issue parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Issues.Issue parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
-    }
-    public static org.sonarqube.ws.Issues.Issue parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Issues.Issue parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonarqube.ws.Issues.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.sonarqube.ws.Issues.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 sonarqube.ws.issues.Issue}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:sonarqube.ws.issues.Issue)
-        org.sonarqube.ws.Issues.IssueOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Issue_descriptor;
-      }
-
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Issue_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                org.sonarqube.ws.Issues.Issue.class, org.sonarqube.ws.Issues.Issue.Builder.class);
-      }
-
-      // Construct using org.sonarqube.ws.Issues.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) {
-          getCommentsFieldBuilder();
-        }
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      public Builder clear() {
-        super.clear();
-        key_ = "";
-        bitField0_ = (bitField0_ & ~0x00000001);
-        rule_ = "";
-        bitField0_ = (bitField0_ & ~0x00000002);
-        component_ = "";
-        bitField0_ = (bitField0_ & ~0x00000004);
-        componentId_ = 0;
-        bitField0_ = (bitField0_ & ~0x00000008);
-        project_ = "";
-        bitField0_ = (bitField0_ & ~0x00000010);
-        subProject_ = "";
-        bitField0_ = (bitField0_ & ~0x00000020);
-        line_ = 0;
-        bitField0_ = (bitField0_ & ~0x00000040);
-        resolution_ = "";
-        bitField0_ = (bitField0_ & ~0x00000080);
-        status_ = "";
-        bitField0_ = (bitField0_ & ~0x00000100);
-        message_ = "";
-        bitField0_ = (bitField0_ & ~0x00000200);
-        debt_ = "";
-        bitField0_ = (bitField0_ & ~0x00000400);
-        assignee_ = "";
-        bitField0_ = (bitField0_ & ~0x00000800);
-        reporter_ = "";
-        bitField0_ = (bitField0_ & ~0x00001000);
-        scmAuthor_ = "";
-        bitField0_ = (bitField0_ & ~0x00002000);
-        actionPlan_ = "";
-        bitField0_ = (bitField0_ & ~0x00004000);
-        actionPlanName_ = "";
-        bitField0_ = (bitField0_ & ~0x00008000);
-        attr_ = "";
-        bitField0_ = (bitField0_ & ~0x00010000);
-        tags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00020000);
-        transitions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00040000);
-        actions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00080000);
-        if (commentsBuilder_ == null) {
-          comments_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00100000);
-        } else {
-          commentsBuilder_.clear();
-        }
-        creationDate_ = "";
-        bitField0_ = (bitField0_ & ~0x00200000);
-        updateDate_ = "";
-        bitField0_ = (bitField0_ & ~0x00400000);
-        fUpdateAge_ = "";
-        bitField0_ = (bitField0_ & ~0x00800000);
-        closeDate_ = "";
-        bitField0_ = (bitField0_ & ~0x01000000);
-        return this;
-      }
-
-      public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Issue_descriptor;
-      }
-
-      public org.sonarqube.ws.Issues.Issue getDefaultInstanceForType() {
-        return org.sonarqube.ws.Issues.Issue.getDefaultInstance();
-      }
-
-      public org.sonarqube.ws.Issues.Issue build() {
-        org.sonarqube.ws.Issues.Issue result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      public org.sonarqube.ws.Issues.Issue buildPartial() {
-        org.sonarqube.ws.Issues.Issue result = new org.sonarqube.ws.Issues.Issue(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.key_ = key_;
-        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.rule_ = rule_;
-        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
-          to_bitField0_ |= 0x00000004;
-        }
-        result.component_ = component_;
-        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
-          to_bitField0_ |= 0x00000008;
-        }
-        result.componentId_ = componentId_;
-        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
-          to_bitField0_ |= 0x00000010;
-        }
-        result.project_ = project_;
-        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
-          to_bitField0_ |= 0x00000020;
-        }
-        result.subProject_ = subProject_;
-        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
-          to_bitField0_ |= 0x00000040;
-        }
-        result.line_ = line_;
-        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
-          to_bitField0_ |= 0x00000080;
-        }
-        result.resolution_ = resolution_;
-        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
-          to_bitField0_ |= 0x00000100;
-        }
-        result.status_ = status_;
-        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
-          to_bitField0_ |= 0x00000200;
-        }
-        result.message_ = message_;
-        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
-          to_bitField0_ |= 0x00000400;
-        }
-        result.debt_ = debt_;
-        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
-          to_bitField0_ |= 0x00000800;
-        }
-        result.assignee_ = assignee_;
-        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
-          to_bitField0_ |= 0x00001000;
-        }
-        result.reporter_ = reporter_;
-        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
-          to_bitField0_ |= 0x00002000;
-        }
-        result.scmAuthor_ = scmAuthor_;
-        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
-          to_bitField0_ |= 0x00004000;
-        }
-        result.actionPlan_ = actionPlan_;
-        if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
-          to_bitField0_ |= 0x00008000;
-        }
-        result.actionPlanName_ = actionPlanName_;
-        if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
-          to_bitField0_ |= 0x00010000;
-        }
-        result.attr_ = attr_;
-        if (((bitField0_ & 0x00020000) == 0x00020000)) {
-          tags_ = tags_.getUnmodifiableView();
-          bitField0_ = (bitField0_ & ~0x00020000);
-        }
-        result.tags_ = tags_;
-        if (((bitField0_ & 0x00040000) == 0x00040000)) {
-          transitions_ = transitions_.getUnmodifiableView();
-          bitField0_ = (bitField0_ & ~0x00040000);
-        }
-        result.transitions_ = transitions_;
-        if (((bitField0_ & 0x00080000) == 0x00080000)) {
-          actions_ = actions_.getUnmodifiableView();
-          bitField0_ = (bitField0_ & ~0x00080000);
-        }
-        result.actions_ = actions_;
-        if (commentsBuilder_ == null) {
-          if (((bitField0_ & 0x00100000) == 0x00100000)) {
-            comments_ = java.util.Collections.unmodifiableList(comments_);
-            bitField0_ = (bitField0_ & ~0x00100000);
-          }
-          result.comments_ = comments_;
-        } else {
-          result.comments_ = commentsBuilder_.build();
-        }
-        if (((from_bitField0_ & 0x00200000) == 0x00200000)) {
-          to_bitField0_ |= 0x00020000;
-        }
-        result.creationDate_ = creationDate_;
-        if (((from_bitField0_ & 0x00400000) == 0x00400000)) {
-          to_bitField0_ |= 0x00040000;
-        }
-        result.updateDate_ = updateDate_;
-        if (((from_bitField0_ & 0x00800000) == 0x00800000)) {
-          to_bitField0_ |= 0x00080000;
-        }
-        result.fUpdateAge_ = fUpdateAge_;
-        if (((from_bitField0_ & 0x01000000) == 0x01000000)) {
-          to_bitField0_ |= 0x00100000;
-        }
-        result.closeDate_ = closeDate_;
-        result.bitField0_ = to_bitField0_;
-        onBuilt();
-        return result;
-      }
-
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.sonarqube.ws.Issues.Issue) {
-          return mergeFrom((org.sonarqube.ws.Issues.Issue)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(org.sonarqube.ws.Issues.Issue other) {
-        if (other == org.sonarqube.ws.Issues.Issue.getDefaultInstance()) return this;
-        if (other.hasKey()) {
-          bitField0_ |= 0x00000001;
-          key_ = other.key_;
-          onChanged();
-        }
-        if (other.hasRule()) {
-          bitField0_ |= 0x00000002;
-          rule_ = other.rule_;
-          onChanged();
-        }
-        if (other.hasComponent()) {
-          bitField0_ |= 0x00000004;
-          component_ = other.component_;
-          onChanged();
-        }
-        if (other.hasComponentId()) {
-          setComponentId(other.getComponentId());
-        }
-        if (other.hasProject()) {
-          bitField0_ |= 0x00000010;
-          project_ = other.project_;
-          onChanged();
-        }
-        if (other.hasSubProject()) {
-          bitField0_ |= 0x00000020;
-          subProject_ = other.subProject_;
-          onChanged();
-        }
-        if (other.hasLine()) {
-          setLine(other.getLine());
-        }
-        if (other.hasResolution()) {
-          bitField0_ |= 0x00000080;
-          resolution_ = other.resolution_;
-          onChanged();
-        }
-        if (other.hasStatus()) {
-          bitField0_ |= 0x00000100;
-          status_ = other.status_;
-          onChanged();
-        }
-        if (other.hasMessage()) {
-          bitField0_ |= 0x00000200;
-          message_ = other.message_;
-          onChanged();
-        }
-        if (other.hasDebt()) {
-          bitField0_ |= 0x00000400;
-          debt_ = other.debt_;
-          onChanged();
-        }
-        if (other.hasAssignee()) {
-          bitField0_ |= 0x00000800;
-          assignee_ = other.assignee_;
-          onChanged();
-        }
-        if (other.hasReporter()) {
-          bitField0_ |= 0x00001000;
-          reporter_ = other.reporter_;
-          onChanged();
-        }
-        if (other.hasScmAuthor()) {
-          bitField0_ |= 0x00002000;
-          scmAuthor_ = other.scmAuthor_;
-          onChanged();
-        }
-        if (other.hasActionPlan()) {
-          bitField0_ |= 0x00004000;
-          actionPlan_ = other.actionPlan_;
-          onChanged();
-        }
-        if (other.hasActionPlanName()) {
-          bitField0_ |= 0x00008000;
-          actionPlanName_ = other.actionPlanName_;
-          onChanged();
-        }
-        if (other.hasAttr()) {
-          bitField0_ |= 0x00010000;
-          attr_ = other.attr_;
-          onChanged();
-        }
-        if (!other.tags_.isEmpty()) {
-          if (tags_.isEmpty()) {
-            tags_ = other.tags_;
-            bitField0_ = (bitField0_ & ~0x00020000);
-          } else {
-            ensureTagsIsMutable();
-            tags_.addAll(other.tags_);
-          }
-          onChanged();
-        }
-        if (!other.transitions_.isEmpty()) {
-          if (transitions_.isEmpty()) {
-            transitions_ = other.transitions_;
-            bitField0_ = (bitField0_ & ~0x00040000);
-          } else {
-            ensureTransitionsIsMutable();
-            transitions_.addAll(other.transitions_);
-          }
-          onChanged();
-        }
-        if (!other.actions_.isEmpty()) {
-          if (actions_.isEmpty()) {
-            actions_ = other.actions_;
-            bitField0_ = (bitField0_ & ~0x00080000);
-          } else {
-            ensureActionsIsMutable();
-            actions_.addAll(other.actions_);
-          }
-          onChanged();
-        }
-        if (commentsBuilder_ == null) {
-          if (!other.comments_.isEmpty()) {
-            if (comments_.isEmpty()) {
-              comments_ = other.comments_;
-              bitField0_ = (bitField0_ & ~0x00100000);
-            } else {
-              ensureCommentsIsMutable();
-              comments_.addAll(other.comments_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.comments_.isEmpty()) {
-            if (commentsBuilder_.isEmpty()) {
-              commentsBuilder_.dispose();
-              commentsBuilder_ = null;
-              comments_ = other.comments_;
-              bitField0_ = (bitField0_ & ~0x00100000);
-              commentsBuilder_ = 
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
-                   getCommentsFieldBuilder() : null;
-            } else {
-              commentsBuilder_.addAllMessages(other.comments_);
-            }
-          }
-        }
-        if (other.hasCreationDate()) {
-          bitField0_ |= 0x00200000;
-          creationDate_ = other.creationDate_;
-          onChanged();
-        }
-        if (other.hasUpdateDate()) {
-          bitField0_ |= 0x00400000;
-          updateDate_ = other.updateDate_;
-          onChanged();
-        }
-        if (other.hasFUpdateAge()) {
-          bitField0_ |= 0x00800000;
-          fUpdateAge_ = other.fUpdateAge_;
-          onChanged();
-        }
-        if (other.hasCloseDate()) {
-          bitField0_ |= 0x01000000;
-          closeDate_ = other.closeDate_;
-          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.sonarqube.ws.Issues.Issue parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.sonarqube.ws.Issues.Issue) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.lang.Object key_ = "";
-      /**
-       * <code>optional string key = 1;</code>
-       */
-      public boolean hasKey() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
-       * <code>optional string key = 1;</code>
-       */
-      public java.lang.String getKey() {
-        java.lang.Object ref = key_;
-        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()) {
-            key_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string key = 1;</code>
-       */
-      public com.google.protobuf.ByteString
-          getKeyBytes() {
-        java.lang.Object ref = key_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          key_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string key = 1;</code>
-       */
-      public Builder setKey(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        key_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string key = 1;</code>
-       */
-      public Builder clearKey() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        key_ = getDefaultInstance().getKey();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string key = 1;</code>
-       */
-      public Builder setKeyBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        key_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object rule_ = "";
-      /**
-       * <code>optional string rule = 2;</code>
-       */
-      public boolean hasRule() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
-      }
-      /**
-       * <code>optional string rule = 2;</code>
-       */
-      public java.lang.String getRule() {
-        java.lang.Object ref = rule_;
-        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()) {
-            rule_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string rule = 2;</code>
-       */
-      public com.google.protobuf.ByteString
-          getRuleBytes() {
-        java.lang.Object ref = rule_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          rule_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string rule = 2;</code>
-       */
-      public Builder setRule(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        rule_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string rule = 2;</code>
-       */
-      public Builder clearRule() {
-        bitField0_ = (bitField0_ & ~0x00000002);
-        rule_ = getDefaultInstance().getRule();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string rule = 2;</code>
-       */
-      public Builder setRuleBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        rule_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object component_ = "";
-      /**
-       * <code>optional string component = 3;</code>
-       */
-      public boolean hasComponent() {
-        return ((bitField0_ & 0x00000004) == 0x00000004);
-      }
-      /**
-       * <code>optional string component = 3;</code>
-       */
-      public java.lang.String getComponent() {
-        java.lang.Object ref = component_;
-        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()) {
-            component_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string component = 3;</code>
-       */
-      public com.google.protobuf.ByteString
-          getComponentBytes() {
-        java.lang.Object ref = component_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          component_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string component = 3;</code>
-       */
-      public Builder setComponent(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000004;
-        component_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string component = 3;</code>
-       */
-      public Builder clearComponent() {
-        bitField0_ = (bitField0_ & ~0x00000004);
-        component_ = getDefaultInstance().getComponent();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string component = 3;</code>
-       */
-      public Builder setComponentBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000004;
-        component_ = value;
-        onChanged();
-        return this;
-      }
-
-      private int componentId_ ;
-      /**
-       * <code>optional int32 componentId = 4;</code>
-       */
-      public boolean hasComponentId() {
-        return ((bitField0_ & 0x00000008) == 0x00000008);
-      }
-      /**
-       * <code>optional int32 componentId = 4;</code>
-       */
-      public int getComponentId() {
-        return componentId_;
-      }
-      /**
-       * <code>optional int32 componentId = 4;</code>
-       */
-      public Builder setComponentId(int value) {
-        bitField0_ |= 0x00000008;
-        componentId_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional int32 componentId = 4;</code>
-       */
-      public Builder clearComponentId() {
-        bitField0_ = (bitField0_ & ~0x00000008);
-        componentId_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object project_ = "";
-      /**
-       * <code>optional string project = 5;</code>
-       */
-      public boolean hasProject() {
-        return ((bitField0_ & 0x00000010) == 0x00000010);
-      }
-      /**
-       * <code>optional string project = 5;</code>
-       */
-      public java.lang.String getProject() {
-        java.lang.Object ref = project_;
-        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()) {
-            project_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string project = 5;</code>
-       */
-      public com.google.protobuf.ByteString
-          getProjectBytes() {
-        java.lang.Object ref = project_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          project_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string project = 5;</code>
-       */
-      public Builder setProject(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000010;
-        project_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string project = 5;</code>
-       */
-      public Builder clearProject() {
-        bitField0_ = (bitField0_ & ~0x00000010);
-        project_ = getDefaultInstance().getProject();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string project = 5;</code>
-       */
-      public Builder setProjectBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000010;
-        project_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object subProject_ = "";
-      /**
-       * <code>optional string subProject = 6;</code>
-       */
-      public boolean hasSubProject() {
-        return ((bitField0_ & 0x00000020) == 0x00000020);
-      }
-      /**
-       * <code>optional string subProject = 6;</code>
-       */
-      public java.lang.String getSubProject() {
-        java.lang.Object ref = subProject_;
-        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()) {
-            subProject_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string subProject = 6;</code>
-       */
-      public com.google.protobuf.ByteString
-          getSubProjectBytes() {
-        java.lang.Object ref = subProject_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          subProject_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string subProject = 6;</code>
-       */
-      public Builder setSubProject(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000020;
-        subProject_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string subProject = 6;</code>
-       */
-      public Builder clearSubProject() {
-        bitField0_ = (bitField0_ & ~0x00000020);
-        subProject_ = getDefaultInstance().getSubProject();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string subProject = 6;</code>
-       */
-      public Builder setSubProjectBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000020;
-        subProject_ = value;
-        onChanged();
-        return this;
-      }
-
-      private int line_ ;
-      /**
-       * <code>optional int32 line = 7;</code>
-       */
-      public boolean hasLine() {
-        return ((bitField0_ & 0x00000040) == 0x00000040);
-      }
-      /**
-       * <code>optional int32 line = 7;</code>
-       */
-      public int getLine() {
-        return line_;
-      }
-      /**
-       * <code>optional int32 line = 7;</code>
-       */
-      public Builder setLine(int value) {
-        bitField0_ |= 0x00000040;
-        line_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional int32 line = 7;</code>
-       */
-      public Builder clearLine() {
-        bitField0_ = (bitField0_ & ~0x00000040);
-        line_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object resolution_ = "";
-      /**
-       * <code>optional string resolution = 8;</code>
-       */
-      public boolean hasResolution() {
-        return ((bitField0_ & 0x00000080) == 0x00000080);
-      }
-      /**
-       * <code>optional string resolution = 8;</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 = 8;</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 = 8;</code>
-       */
-      public Builder setResolution(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000080;
-        resolution_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string resolution = 8;</code>
-       */
-      public Builder clearResolution() {
-        bitField0_ = (bitField0_ & ~0x00000080);
-        resolution_ = getDefaultInstance().getResolution();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string resolution = 8;</code>
-       */
-      public Builder setResolutionBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000080;
-        resolution_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object status_ = "";
-      /**
-       * <code>optional string status = 9;</code>
-       */
-      public boolean hasStatus() {
-        return ((bitField0_ & 0x00000100) == 0x00000100);
-      }
-      /**
-       * <code>optional string status = 9;</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 = 9;</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 = 9;</code>
-       */
-      public Builder setStatus(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000100;
-        status_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string status = 9;</code>
-       */
-      public Builder clearStatus() {
-        bitField0_ = (bitField0_ & ~0x00000100);
-        status_ = getDefaultInstance().getStatus();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string status = 9;</code>
-       */
-      public Builder setStatusBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000100;
-        status_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object message_ = "";
-      /**
-       * <code>optional string message = 10;</code>
-       */
-      public boolean hasMessage() {
-        return ((bitField0_ & 0x00000200) == 0x00000200);
-      }
-      /**
-       * <code>optional string message = 10;</code>
-       */
-      public java.lang.String getMessage() {
-        java.lang.Object ref = message_;
-        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()) {
-            message_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string message = 10;</code>
-       */
-      public com.google.protobuf.ByteString
-          getMessageBytes() {
-        java.lang.Object ref = message_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          message_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string message = 10;</code>
-       */
-      public Builder setMessage(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000200;
-        message_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string message = 10;</code>
-       */
-      public Builder clearMessage() {
-        bitField0_ = (bitField0_ & ~0x00000200);
-        message_ = getDefaultInstance().getMessage();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string message = 10;</code>
-       */
-      public Builder setMessageBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000200;
-        message_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object debt_ = "";
-      /**
-       * <code>optional string debt = 11;</code>
-       */
-      public boolean hasDebt() {
-        return ((bitField0_ & 0x00000400) == 0x00000400);
-      }
-      /**
-       * <code>optional string debt = 11;</code>
-       */
-      public java.lang.String getDebt() {
-        java.lang.Object ref = debt_;
-        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()) {
-            debt_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string debt = 11;</code>
-       */
-      public com.google.protobuf.ByteString
-          getDebtBytes() {
-        java.lang.Object ref = debt_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          debt_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string debt = 11;</code>
-       */
-      public Builder setDebt(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000400;
-        debt_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string debt = 11;</code>
-       */
-      public Builder clearDebt() {
-        bitField0_ = (bitField0_ & ~0x00000400);
-        debt_ = getDefaultInstance().getDebt();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string debt = 11;</code>
-       */
-      public Builder setDebtBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000400;
-        debt_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object assignee_ = "";
-      /**
-       * <code>optional string assignee = 12;</code>
-       */
-      public boolean hasAssignee() {
-        return ((bitField0_ & 0x00000800) == 0x00000800);
-      }
-      /**
-       * <code>optional string assignee = 12;</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 = 12;</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 = 12;</code>
-       */
-      public Builder setAssignee(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000800;
-        assignee_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string assignee = 12;</code>
-       */
-      public Builder clearAssignee() {
-        bitField0_ = (bitField0_ & ~0x00000800);
-        assignee_ = getDefaultInstance().getAssignee();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string assignee = 12;</code>
-       */
-      public Builder setAssigneeBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000800;
-        assignee_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object reporter_ = "";
-      /**
-       * <code>optional string reporter = 13;</code>
-       */
-      public boolean hasReporter() {
-        return ((bitField0_ & 0x00001000) == 0x00001000);
-      }
-      /**
-       * <code>optional string reporter = 13;</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 = 13;</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 = 13;</code>
-       */
-      public Builder setReporter(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00001000;
-        reporter_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string reporter = 13;</code>
-       */
-      public Builder clearReporter() {
-        bitField0_ = (bitField0_ & ~0x00001000);
-        reporter_ = getDefaultInstance().getReporter();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string reporter = 13;</code>
-       */
-      public Builder setReporterBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00001000;
-        reporter_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object scmAuthor_ = "";
-      /**
-       * <code>optional string scmAuthor = 14;</code>
-       */
-      public boolean hasScmAuthor() {
-        return ((bitField0_ & 0x00002000) == 0x00002000);
-      }
-      /**
-       * <code>optional string scmAuthor = 14;</code>
-       */
-      public java.lang.String getScmAuthor() {
-        java.lang.Object ref = scmAuthor_;
-        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()) {
-            scmAuthor_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string scmAuthor = 14;</code>
-       */
-      public com.google.protobuf.ByteString
-          getScmAuthorBytes() {
-        java.lang.Object ref = scmAuthor_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          scmAuthor_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string scmAuthor = 14;</code>
-       */
-      public Builder setScmAuthor(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00002000;
-        scmAuthor_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string scmAuthor = 14;</code>
-       */
-      public Builder clearScmAuthor() {
-        bitField0_ = (bitField0_ & ~0x00002000);
-        scmAuthor_ = getDefaultInstance().getScmAuthor();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string scmAuthor = 14;</code>
-       */
-      public Builder setScmAuthorBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00002000;
-        scmAuthor_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object actionPlan_ = "";
-      /**
-       * <code>optional string actionPlan = 15;</code>
-       */
-      public boolean hasActionPlan() {
-        return ((bitField0_ & 0x00004000) == 0x00004000);
-      }
-      /**
-       * <code>optional string actionPlan = 15;</code>
-       */
-      public java.lang.String getActionPlan() {
-        java.lang.Object ref = actionPlan_;
-        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()) {
-            actionPlan_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string actionPlan = 15;</code>
-       */
-      public com.google.protobuf.ByteString
-          getActionPlanBytes() {
-        java.lang.Object ref = actionPlan_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          actionPlan_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string actionPlan = 15;</code>
-       */
-      public Builder setActionPlan(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00004000;
-        actionPlan_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string actionPlan = 15;</code>
-       */
-      public Builder clearActionPlan() {
-        bitField0_ = (bitField0_ & ~0x00004000);
-        actionPlan_ = getDefaultInstance().getActionPlan();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string actionPlan = 15;</code>
-       */
-      public Builder setActionPlanBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00004000;
-        actionPlan_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object actionPlanName_ = "";
-      /**
-       * <code>optional string actionPlanName = 16;</code>
-       */
-      public boolean hasActionPlanName() {
-        return ((bitField0_ & 0x00008000) == 0x00008000);
-      }
-      /**
-       * <code>optional string actionPlanName = 16;</code>
-       */
-      public java.lang.String getActionPlanName() {
-        java.lang.Object ref = actionPlanName_;
-        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()) {
-            actionPlanName_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string actionPlanName = 16;</code>
-       */
-      public com.google.protobuf.ByteString
-          getActionPlanNameBytes() {
-        java.lang.Object ref = actionPlanName_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          actionPlanName_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string actionPlanName = 16;</code>
-       */
-      public Builder setActionPlanName(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00008000;
-        actionPlanName_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string actionPlanName = 16;</code>
-       */
-      public Builder clearActionPlanName() {
-        bitField0_ = (bitField0_ & ~0x00008000);
-        actionPlanName_ = getDefaultInstance().getActionPlanName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string actionPlanName = 16;</code>
-       */
-      public Builder setActionPlanNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00008000;
-        actionPlanName_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object attr_ = "";
-      /**
-       * <code>optional string attr = 17;</code>
-       */
-      public boolean hasAttr() {
-        return ((bitField0_ & 0x00010000) == 0x00010000);
-      }
-      /**
-       * <code>optional string attr = 17;</code>
-       */
-      public java.lang.String getAttr() {
-        java.lang.Object ref = attr_;
-        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()) {
-            attr_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string attr = 17;</code>
-       */
-      public com.google.protobuf.ByteString
-          getAttrBytes() {
-        java.lang.Object ref = attr_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          attr_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string attr = 17;</code>
-       */
-      public Builder setAttr(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00010000;
-        attr_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string attr = 17;</code>
-       */
-      public Builder clearAttr() {
-        bitField0_ = (bitField0_ & ~0x00010000);
-        attr_ = getDefaultInstance().getAttr();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string attr = 17;</code>
-       */
-      public Builder setAttrBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00010000;
-        attr_ = value;
-        onChanged();
-        return this;
-      }
-
-      private com.google.protobuf.LazyStringList tags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-      private void ensureTagsIsMutable() {
-        if (!((bitField0_ & 0x00020000) == 0x00020000)) {
-          tags_ = new com.google.protobuf.LazyStringArrayList(tags_);
-          bitField0_ |= 0x00020000;
-         }
-      }
-      /**
-       * <code>repeated string tags = 18;</code>
-       */
-      public com.google.protobuf.ProtocolStringList
-          getTagsList() {
-        return tags_.getUnmodifiableView();
-      }
-      /**
-       * <code>repeated string tags = 18;</code>
-       */
-      public int getTagsCount() {
-        return tags_.size();
-      }
-      /**
-       * <code>repeated string tags = 18;</code>
-       */
-      public java.lang.String getTags(int index) {
-        return tags_.get(index);
-      }
-      /**
-       * <code>repeated string tags = 18;</code>
-       */
-      public com.google.protobuf.ByteString
-          getTagsBytes(int index) {
-        return tags_.getByteString(index);
-      }
-      /**
-       * <code>repeated string tags = 18;</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 = 18;</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 = 18;</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 = 18;</code>
-       */
-      public Builder clearTags() {
-        tags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00020000);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string tags = 18;</code>
-       */
-      public Builder addTagsBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureTagsIsMutable();
-        tags_.add(value);
-        onChanged();
-        return this;
-      }
-
-      private com.google.protobuf.LazyStringList transitions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-      private void ensureTransitionsIsMutable() {
-        if (!((bitField0_ & 0x00040000) == 0x00040000)) {
-          transitions_ = new com.google.protobuf.LazyStringArrayList(transitions_);
-          bitField0_ |= 0x00040000;
-         }
-      }
-      /**
-       * <code>repeated string transitions = 19;</code>
-       */
-      public com.google.protobuf.ProtocolStringList
-          getTransitionsList() {
-        return transitions_.getUnmodifiableView();
-      }
-      /**
-       * <code>repeated string transitions = 19;</code>
-       */
-      public int getTransitionsCount() {
-        return transitions_.size();
-      }
-      /**
-       * <code>repeated string transitions = 19;</code>
-       */
-      public java.lang.String getTransitions(int index) {
-        return transitions_.get(index);
-      }
-      /**
-       * <code>repeated string transitions = 19;</code>
-       */
-      public com.google.protobuf.ByteString
-          getTransitionsBytes(int index) {
-        return transitions_.getByteString(index);
-      }
-      /**
-       * <code>repeated string transitions = 19;</code>
-       */
-      public Builder setTransitions(
-          int index, java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureTransitionsIsMutable();
-        transitions_.set(index, value);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string transitions = 19;</code>
-       */
-      public Builder addTransitions(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureTransitionsIsMutable();
-        transitions_.add(value);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string transitions = 19;</code>
-       */
-      public Builder addAllTransitions(
-          java.lang.Iterable<java.lang.String> values) {
-        ensureTransitionsIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, transitions_);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string transitions = 19;</code>
-       */
-      public Builder clearTransitions() {
-        transitions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00040000);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string transitions = 19;</code>
-       */
-      public Builder addTransitionsBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureTransitionsIsMutable();
-        transitions_.add(value);
-        onChanged();
-        return this;
-      }
-
-      private com.google.protobuf.LazyStringList actions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-      private void ensureActionsIsMutable() {
-        if (!((bitField0_ & 0x00080000) == 0x00080000)) {
-          actions_ = new com.google.protobuf.LazyStringArrayList(actions_);
-          bitField0_ |= 0x00080000;
-         }
-      }
-      /**
-       * <code>repeated string actions = 20;</code>
-       */
-      public com.google.protobuf.ProtocolStringList
-          getActionsList() {
-        return actions_.getUnmodifiableView();
-      }
-      /**
-       * <code>repeated string actions = 20;</code>
-       */
-      public int getActionsCount() {
-        return actions_.size();
-      }
-      /**
-       * <code>repeated string actions = 20;</code>
-       */
-      public java.lang.String getActions(int index) {
-        return actions_.get(index);
-      }
-      /**
-       * <code>repeated string actions = 20;</code>
-       */
-      public com.google.protobuf.ByteString
-          getActionsBytes(int index) {
-        return actions_.getByteString(index);
-      }
-      /**
-       * <code>repeated string actions = 20;</code>
-       */
-      public Builder setActions(
-          int index, java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureActionsIsMutable();
-        actions_.set(index, value);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string actions = 20;</code>
-       */
-      public Builder addActions(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureActionsIsMutable();
-        actions_.add(value);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string actions = 20;</code>
-       */
-      public Builder addAllActions(
-          java.lang.Iterable<java.lang.String> values) {
-        ensureActionsIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, actions_);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string actions = 20;</code>
-       */
-      public Builder clearActions() {
-        actions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00080000);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string actions = 20;</code>
-       */
-      public Builder addActionsBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureActionsIsMutable();
-        actions_.add(value);
-        onChanged();
-        return this;
-      }
-
-      private java.util.List<org.sonarqube.ws.Issues.Comment> comments_ =
-        java.util.Collections.emptyList();
-      private void ensureCommentsIsMutable() {
-        if (!((bitField0_ & 0x00100000) == 0x00100000)) {
-          comments_ = new java.util.ArrayList<org.sonarqube.ws.Issues.Comment>(comments_);
-          bitField0_ |= 0x00100000;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.sonarqube.ws.Issues.Comment, org.sonarqube.ws.Issues.Comment.Builder, org.sonarqube.ws.Issues.CommentOrBuilder> commentsBuilder_;
-
-      /**
-       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-       */
-      public java.util.List<org.sonarqube.ws.Issues.Comment> getCommentsList() {
-        if (commentsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(comments_);
-        } else {
-          return commentsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-       */
-      public int getCommentsCount() {
-        if (commentsBuilder_ == null) {
-          return comments_.size();
-        } else {
-          return commentsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-       */
-      public org.sonarqube.ws.Issues.Comment getComments(int index) {
-        if (commentsBuilder_ == null) {
-          return comments_.get(index);
-        } else {
-          return commentsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-       */
-      public Builder setComments(
-          int index, org.sonarqube.ws.Issues.Comment value) {
-        if (commentsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureCommentsIsMutable();
-          comments_.set(index, value);
-          onChanged();
-        } else {
-          commentsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-       */
-      public Builder setComments(
-          int index, org.sonarqube.ws.Issues.Comment.Builder builderForValue) {
-        if (commentsBuilder_ == null) {
-          ensureCommentsIsMutable();
-          comments_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          commentsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-       */
-      public Builder addComments(org.sonarqube.ws.Issues.Comment value) {
-        if (commentsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureCommentsIsMutable();
-          comments_.add(value);
-          onChanged();
-        } else {
-          commentsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-       */
-      public Builder addComments(
-          int index, org.sonarqube.ws.Issues.Comment value) {
-        if (commentsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureCommentsIsMutable();
-          comments_.add(index, value);
-          onChanged();
-        } else {
-          commentsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-       */
-      public Builder addComments(
-          org.sonarqube.ws.Issues.Comment.Builder builderForValue) {
-        if (commentsBuilder_ == null) {
-          ensureCommentsIsMutable();
-          comments_.add(builderForValue.build());
-          onChanged();
-        } else {
-          commentsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-       */
-      public Builder addComments(
-          int index, org.sonarqube.ws.Issues.Comment.Builder builderForValue) {
-        if (commentsBuilder_ == null) {
-          ensureCommentsIsMutable();
-          comments_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          commentsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-       */
-      public Builder addAllComments(
-          java.lang.Iterable<? extends org.sonarqube.ws.Issues.Comment> values) {
-        if (commentsBuilder_ == null) {
-          ensureCommentsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, comments_);
-          onChanged();
-        } else {
-          commentsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-       */
-      public Builder clearComments() {
-        if (commentsBuilder_ == null) {
-          comments_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00100000);
-          onChanged();
-        } else {
-          commentsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-       */
-      public Builder removeComments(int index) {
-        if (commentsBuilder_ == null) {
-          ensureCommentsIsMutable();
-          comments_.remove(index);
-          onChanged();
-        } else {
-          commentsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-       */
-      public org.sonarqube.ws.Issues.Comment.Builder getCommentsBuilder(
-          int index) {
-        return getCommentsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-       */
-      public org.sonarqube.ws.Issues.CommentOrBuilder getCommentsOrBuilder(
-          int index) {
-        if (commentsBuilder_ == null) {
-          return comments_.get(index);  } else {
-          return commentsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-       */
-      public java.util.List<? extends org.sonarqube.ws.Issues.CommentOrBuilder> 
-           getCommentsOrBuilderList() {
-        if (commentsBuilder_ != null) {
-          return commentsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(comments_);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-       */
-      public org.sonarqube.ws.Issues.Comment.Builder addCommentsBuilder() {
-        return getCommentsFieldBuilder().addBuilder(
-            org.sonarqube.ws.Issues.Comment.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-       */
-      public org.sonarqube.ws.Issues.Comment.Builder addCommentsBuilder(
-          int index) {
-        return getCommentsFieldBuilder().addBuilder(
-            index, org.sonarqube.ws.Issues.Comment.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
-       */
-      public java.util.List<org.sonarqube.ws.Issues.Comment.Builder> 
-           getCommentsBuilderList() {
-        return getCommentsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.sonarqube.ws.Issues.Comment, org.sonarqube.ws.Issues.Comment.Builder, org.sonarqube.ws.Issues.CommentOrBuilder> 
-          getCommentsFieldBuilder() {
-        if (commentsBuilder_ == null) {
-          commentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              org.sonarqube.ws.Issues.Comment, org.sonarqube.ws.Issues.Comment.Builder, org.sonarqube.ws.Issues.CommentOrBuilder>(
-                  comments_,
-                  ((bitField0_ & 0x00100000) == 0x00100000),
-                  getParentForChildren(),
-                  isClean());
-          comments_ = null;
-        }
-        return commentsBuilder_;
-      }
-
-      private java.lang.Object creationDate_ = "";
-      /**
-       * <code>optional string creationDate = 22;</code>
-       */
-      public boolean hasCreationDate() {
-        return ((bitField0_ & 0x00200000) == 0x00200000);
-      }
-      /**
-       * <code>optional string creationDate = 22;</code>
-       */
-      public java.lang.String getCreationDate() {
-        java.lang.Object ref = creationDate_;
-        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()) {
-            creationDate_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string creationDate = 22;</code>
-       */
-      public com.google.protobuf.ByteString
-          getCreationDateBytes() {
-        java.lang.Object ref = creationDate_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          creationDate_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string creationDate = 22;</code>
-       */
-      public Builder setCreationDate(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00200000;
-        creationDate_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string creationDate = 22;</code>
-       */
-      public Builder clearCreationDate() {
-        bitField0_ = (bitField0_ & ~0x00200000);
-        creationDate_ = getDefaultInstance().getCreationDate();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string creationDate = 22;</code>
-       */
-      public Builder setCreationDateBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00200000;
-        creationDate_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object updateDate_ = "";
-      /**
-       * <code>optional string updateDate = 23;</code>
-       */
-      public boolean hasUpdateDate() {
-        return ((bitField0_ & 0x00400000) == 0x00400000);
-      }
-      /**
-       * <code>optional string updateDate = 23;</code>
-       */
-      public java.lang.String getUpdateDate() {
-        java.lang.Object ref = updateDate_;
-        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()) {
-            updateDate_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string updateDate = 23;</code>
-       */
-      public com.google.protobuf.ByteString
-          getUpdateDateBytes() {
-        java.lang.Object ref = updateDate_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          updateDate_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string updateDate = 23;</code>
-       */
-      public Builder setUpdateDate(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00400000;
-        updateDate_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string updateDate = 23;</code>
-       */
-      public Builder clearUpdateDate() {
-        bitField0_ = (bitField0_ & ~0x00400000);
-        updateDate_ = getDefaultInstance().getUpdateDate();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string updateDate = 23;</code>
-       */
-      public Builder setUpdateDateBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00400000;
-        updateDate_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object fUpdateAge_ = "";
-      /**
-       * <code>optional string fUpdateAge = 24;</code>
-       */
-      public boolean hasFUpdateAge() {
-        return ((bitField0_ & 0x00800000) == 0x00800000);
-      }
-      /**
-       * <code>optional string fUpdateAge = 24;</code>
-       */
-      public java.lang.String getFUpdateAge() {
-        java.lang.Object ref = fUpdateAge_;
-        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()) {
-            fUpdateAge_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string fUpdateAge = 24;</code>
-       */
-      public com.google.protobuf.ByteString
-          getFUpdateAgeBytes() {
-        java.lang.Object ref = fUpdateAge_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          fUpdateAge_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string fUpdateAge = 24;</code>
-       */
-      public Builder setFUpdateAge(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00800000;
-        fUpdateAge_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string fUpdateAge = 24;</code>
-       */
-      public Builder clearFUpdateAge() {
-        bitField0_ = (bitField0_ & ~0x00800000);
-        fUpdateAge_ = getDefaultInstance().getFUpdateAge();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string fUpdateAge = 24;</code>
-       */
-      public Builder setFUpdateAgeBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00800000;
-        fUpdateAge_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object closeDate_ = "";
-      /**
-       * <code>optional string closeDate = 25;</code>
-       */
-      public boolean hasCloseDate() {
-        return ((bitField0_ & 0x01000000) == 0x01000000);
-      }
-      /**
-       * <code>optional string closeDate = 25;</code>
-       */
-      public java.lang.String getCloseDate() {
-        java.lang.Object ref = closeDate_;
-        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()) {
-            closeDate_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string closeDate = 25;</code>
-       */
-      public com.google.protobuf.ByteString
-          getCloseDateBytes() {
-        java.lang.Object ref = closeDate_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          closeDate_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string closeDate = 25;</code>
-       */
-      public Builder setCloseDate(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x01000000;
-        closeDate_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string closeDate = 25;</code>
-       */
-      public Builder clearCloseDate() {
-        bitField0_ = (bitField0_ & ~0x01000000);
-        closeDate_ = getDefaultInstance().getCloseDate();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string closeDate = 25;</code>
-       */
-      public Builder setCloseDateBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x01000000;
-        closeDate_ = value;
-        onChanged();
-        return this;
-      }
-
-      // @@protoc_insertion_point(builder_scope:sonarqube.ws.issues.Issue)
-    }
-
-    static {
-      defaultInstance = new Issue(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:sonarqube.ws.issues.Issue)
-  }
-
-  public interface CommentOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:sonarqube.ws.issues.Comment)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>optional string key = 1;</code>
-     */
-    boolean hasKey();
-    /**
-     * <code>optional string key = 1;</code>
-     */
-    java.lang.String getKey();
-    /**
-     * <code>optional string key = 1;</code>
-     */
-    com.google.protobuf.ByteString
-        getKeyBytes();
-
-    /**
-     * <code>optional string login = 2;</code>
-     */
-    boolean hasLogin();
-    /**
-     * <code>optional string login = 2;</code>
-     */
-    java.lang.String getLogin();
-    /**
-     * <code>optional string login = 2;</code>
-     */
-    com.google.protobuf.ByteString
-        getLoginBytes();
-
-    /**
-     * <code>optional string email = 3;</code>
-     */
-    boolean hasEmail();
-    /**
-     * <code>optional string email = 3;</code>
-     */
-    java.lang.String getEmail();
-    /**
-     * <code>optional string email = 3;</code>
-     */
-    com.google.protobuf.ByteString
-        getEmailBytes();
-
-    /**
-     * <code>optional string userName = 4;</code>
-     */
-    boolean hasUserName();
-    /**
-     * <code>optional string userName = 4;</code>
-     */
-    java.lang.String getUserName();
-    /**
-     * <code>optional string userName = 4;</code>
-     */
-    com.google.protobuf.ByteString
-        getUserNameBytes();
-
-    /**
-     * <code>optional string htmlText = 5;</code>
-     */
-    boolean hasHtmlText();
-    /**
-     * <code>optional string htmlText = 5;</code>
-     */
-    java.lang.String getHtmlText();
-    /**
-     * <code>optional string htmlText = 5;</code>
-     */
-    com.google.protobuf.ByteString
-        getHtmlTextBytes();
-
-    /**
-     * <code>optional string markdown = 6;</code>
-     */
-    boolean hasMarkdown();
-    /**
-     * <code>optional string markdown = 6;</code>
-     */
-    java.lang.String getMarkdown();
-    /**
-     * <code>optional string markdown = 6;</code>
-     */
-    com.google.protobuf.ByteString
-        getMarkdownBytes();
-
-    /**
-     * <code>optional bool updatable = 7;</code>
-     */
-    boolean hasUpdatable();
-    /**
-     * <code>optional bool updatable = 7;</code>
-     */
-    boolean getUpdatable();
-
-    /**
-     * <code>optional string createdAt = 8;</code>
-     */
-    boolean hasCreatedAt();
-    /**
-     * <code>optional string createdAt = 8;</code>
-     */
-    java.lang.String getCreatedAt();
-    /**
-     * <code>optional string createdAt = 8;</code>
-     */
-    com.google.protobuf.ByteString
-        getCreatedAtBytes();
-  }
-  /**
-   * Protobuf type {@code sonarqube.ws.issues.Comment}
-   */
-  public static final class Comment extends
-      com.google.protobuf.GeneratedMessage implements
-      // @@protoc_insertion_point(message_implements:sonarqube.ws.issues.Comment)
-      CommentOrBuilder {
-    // Use Comment.newBuilder() to construct.
-    private Comment(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private Comment(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final Comment defaultInstance;
-    public static Comment getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    public Comment getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Comment(
-        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;
-              key_ = bs;
-              break;
-            }
-            case 18: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000002;
-              login_ = bs;
-              break;
-            }
-            case 26: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000004;
-              email_ = bs;
-              break;
-            }
-            case 34: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000008;
-              userName_ = bs;
-              break;
-            }
-            case 42: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000010;
-              htmlText_ = bs;
-              break;
-            }
-            case 50: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000020;
-              markdown_ = bs;
-              break;
-            }
-            case 56: {
-              bitField0_ |= 0x00000040;
-              updatable_ = input.readBool();
-              break;
-            }
-            case 66: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000080;
-              createdAt_ = 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 {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Comment_descriptor;
-    }
-
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Comment_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              org.sonarqube.ws.Issues.Comment.class, org.sonarqube.ws.Issues.Comment.Builder.class);
-    }
-
-    public static com.google.protobuf.Parser<Comment> PARSER =
-        new com.google.protobuf.AbstractParser<Comment>() {
-      public Comment parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Comment(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<Comment> getParserForType() {
-      return PARSER;
-    }
-
-    private int bitField0_;
-    public static final int KEY_FIELD_NUMBER = 1;
-    private java.lang.Object key_;
-    /**
-     * <code>optional string key = 1;</code>
-     */
-    public boolean hasKey() {
-      return ((bitField0_ & 0x00000001) == 0x00000001);
-    }
-    /**
-     * <code>optional string key = 1;</code>
-     */
-    public java.lang.String getKey() {
-      java.lang.Object ref = key_;
-      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()) {
-          key_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string key = 1;</code>
-     */
-    public com.google.protobuf.ByteString
-        getKeyBytes() {
-      java.lang.Object ref = key_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        key_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int LOGIN_FIELD_NUMBER = 2;
-    private java.lang.Object login_;
-    /**
-     * <code>optional string login = 2;</code>
-     */
-    public boolean hasLogin() {
-      return ((bitField0_ & 0x00000002) == 0x00000002);
-    }
-    /**
-     * <code>optional string login = 2;</code>
-     */
-    public java.lang.String getLogin() {
-      java.lang.Object ref = login_;
-      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()) {
-          login_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string login = 2;</code>
-     */
-    public com.google.protobuf.ByteString
-        getLoginBytes() {
-      java.lang.Object ref = login_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        login_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int EMAIL_FIELD_NUMBER = 3;
-    private java.lang.Object email_;
-    /**
-     * <code>optional string email = 3;</code>
-     */
-    public boolean hasEmail() {
-      return ((bitField0_ & 0x00000004) == 0x00000004);
-    }
-    /**
-     * <code>optional string email = 3;</code>
-     */
-    public java.lang.String getEmail() {
-      java.lang.Object ref = email_;
-      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()) {
-          email_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string email = 3;</code>
-     */
-    public com.google.protobuf.ByteString
-        getEmailBytes() {
-      java.lang.Object ref = email_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        email_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int USERNAME_FIELD_NUMBER = 4;
-    private java.lang.Object userName_;
-    /**
-     * <code>optional string userName = 4;</code>
-     */
-    public boolean hasUserName() {
-      return ((bitField0_ & 0x00000008) == 0x00000008);
-    }
-    /**
-     * <code>optional string userName = 4;</code>
-     */
-    public java.lang.String getUserName() {
-      java.lang.Object ref = userName_;
-      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()) {
-          userName_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string userName = 4;</code>
-     */
-    public com.google.protobuf.ByteString
-        getUserNameBytes() {
-      java.lang.Object ref = userName_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        userName_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int HTMLTEXT_FIELD_NUMBER = 5;
-    private java.lang.Object htmlText_;
-    /**
-     * <code>optional string htmlText = 5;</code>
-     */
-    public boolean hasHtmlText() {
-      return ((bitField0_ & 0x00000010) == 0x00000010);
-    }
-    /**
-     * <code>optional string htmlText = 5;</code>
-     */
-    public java.lang.String getHtmlText() {
-      java.lang.Object ref = htmlText_;
-      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()) {
-          htmlText_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string htmlText = 5;</code>
-     */
-    public com.google.protobuf.ByteString
-        getHtmlTextBytes() {
-      java.lang.Object ref = htmlText_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        htmlText_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int MARKDOWN_FIELD_NUMBER = 6;
-    private java.lang.Object markdown_;
-    /**
-     * <code>optional string markdown = 6;</code>
-     */
-    public boolean hasMarkdown() {
-      return ((bitField0_ & 0x00000020) == 0x00000020);
-    }
-    /**
-     * <code>optional string markdown = 6;</code>
-     */
-    public java.lang.String getMarkdown() {
-      java.lang.Object ref = markdown_;
-      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()) {
-          markdown_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string markdown = 6;</code>
-     */
-    public com.google.protobuf.ByteString
-        getMarkdownBytes() {
-      java.lang.Object ref = markdown_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        markdown_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int UPDATABLE_FIELD_NUMBER = 7;
-    private boolean updatable_;
-    /**
-     * <code>optional bool updatable = 7;</code>
-     */
-    public boolean hasUpdatable() {
-      return ((bitField0_ & 0x00000040) == 0x00000040);
-    }
-    /**
-     * <code>optional bool updatable = 7;</code>
-     */
-    public boolean getUpdatable() {
-      return updatable_;
-    }
-
-    public static final int CREATEDAT_FIELD_NUMBER = 8;
-    private java.lang.Object createdAt_;
-    /**
-     * <code>optional string createdAt = 8;</code>
-     */
-    public boolean hasCreatedAt() {
-      return ((bitField0_ & 0x00000080) == 0x00000080);
-    }
-    /**
-     * <code>optional string createdAt = 8;</code>
-     */
-    public java.lang.String getCreatedAt() {
-      java.lang.Object ref = createdAt_;
-      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()) {
-          createdAt_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string createdAt = 8;</code>
-     */
-    public com.google.protobuf.ByteString
-        getCreatedAtBytes() {
-      java.lang.Object ref = createdAt_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        createdAt_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    private void initFields() {
-      key_ = "";
-      login_ = "";
-      email_ = "";
-      userName_ = "";
-      htmlText_ = "";
-      markdown_ = "";
-      updatable_ = false;
-      createdAt_ = "";
-    }
-    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, getKeyBytes());
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeBytes(2, getLoginBytes());
-      }
-      if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        output.writeBytes(3, getEmailBytes());
-      }
-      if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        output.writeBytes(4, getUserNameBytes());
-      }
-      if (((bitField0_ & 0x00000010) == 0x00000010)) {
-        output.writeBytes(5, getHtmlTextBytes());
-      }
-      if (((bitField0_ & 0x00000020) == 0x00000020)) {
-        output.writeBytes(6, getMarkdownBytes());
-      }
-      if (((bitField0_ & 0x00000040) == 0x00000040)) {
-        output.writeBool(7, updatable_);
-      }
-      if (((bitField0_ & 0x00000080) == 0x00000080)) {
-        output.writeBytes(8, getCreatedAtBytes());
-      }
-      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, getKeyBytes());
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(2, getLoginBytes());
-      }
-      if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(3, getEmailBytes());
-      }
-      if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(4, getUserNameBytes());
-      }
-      if (((bitField0_ & 0x00000010) == 0x00000010)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(5, getHtmlTextBytes());
-      }
-      if (((bitField0_ & 0x00000020) == 0x00000020)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(6, getMarkdownBytes());
-      }
-      if (((bitField0_ & 0x00000040) == 0x00000040)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(7, updatable_);
-      }
-      if (((bitField0_ & 0x00000080) == 0x00000080)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(8, getCreatedAtBytes());
-      }
-      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.sonarqube.ws.Issues.Comment parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonarqube.ws.Issues.Comment parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Issues.Comment parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonarqube.ws.Issues.Comment parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Issues.Comment parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonarqube.ws.Issues.Comment parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Issues.Comment parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
-    }
-    public static org.sonarqube.ws.Issues.Comment parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Issues.Comment parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonarqube.ws.Issues.Comment 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.sonarqube.ws.Issues.Comment 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 sonarqube.ws.issues.Comment}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:sonarqube.ws.issues.Comment)
-        org.sonarqube.ws.Issues.CommentOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Comment_descriptor;
-      }
-
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Comment_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                org.sonarqube.ws.Issues.Comment.class, org.sonarqube.ws.Issues.Comment.Builder.class);
-      }
-
-      // Construct using org.sonarqube.ws.Issues.Comment.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();
-        key_ = "";
-        bitField0_ = (bitField0_ & ~0x00000001);
-        login_ = "";
-        bitField0_ = (bitField0_ & ~0x00000002);
-        email_ = "";
-        bitField0_ = (bitField0_ & ~0x00000004);
-        userName_ = "";
-        bitField0_ = (bitField0_ & ~0x00000008);
-        htmlText_ = "";
-        bitField0_ = (bitField0_ & ~0x00000010);
-        markdown_ = "";
-        bitField0_ = (bitField0_ & ~0x00000020);
-        updatable_ = false;
-        bitField0_ = (bitField0_ & ~0x00000040);
-        createdAt_ = "";
-        bitField0_ = (bitField0_ & ~0x00000080);
-        return this;
-      }
-
-      public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Comment_descriptor;
-      }
-
-      public org.sonarqube.ws.Issues.Comment getDefaultInstanceForType() {
-        return org.sonarqube.ws.Issues.Comment.getDefaultInstance();
-      }
-
-      public org.sonarqube.ws.Issues.Comment build() {
-        org.sonarqube.ws.Issues.Comment result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      public org.sonarqube.ws.Issues.Comment buildPartial() {
-        org.sonarqube.ws.Issues.Comment result = new org.sonarqube.ws.Issues.Comment(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.key_ = key_;
-        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.login_ = login_;
-        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
-          to_bitField0_ |= 0x00000004;
-        }
-        result.email_ = email_;
-        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
-          to_bitField0_ |= 0x00000008;
-        }
-        result.userName_ = userName_;
-        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
-          to_bitField0_ |= 0x00000010;
-        }
-        result.htmlText_ = htmlText_;
-        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
-          to_bitField0_ |= 0x00000020;
-        }
-        result.markdown_ = markdown_;
-        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
-          to_bitField0_ |= 0x00000040;
-        }
-        result.updatable_ = updatable_;
-        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
-          to_bitField0_ |= 0x00000080;
-        }
-        result.createdAt_ = createdAt_;
-        result.bitField0_ = to_bitField0_;
-        onBuilt();
-        return result;
-      }
-
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.sonarqube.ws.Issues.Comment) {
-          return mergeFrom((org.sonarqube.ws.Issues.Comment)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(org.sonarqube.ws.Issues.Comment other) {
-        if (other == org.sonarqube.ws.Issues.Comment.getDefaultInstance()) return this;
-        if (other.hasKey()) {
-          bitField0_ |= 0x00000001;
-          key_ = other.key_;
-          onChanged();
-        }
-        if (other.hasLogin()) {
-          bitField0_ |= 0x00000002;
-          login_ = other.login_;
-          onChanged();
-        }
-        if (other.hasEmail()) {
-          bitField0_ |= 0x00000004;
-          email_ = other.email_;
-          onChanged();
-        }
-        if (other.hasUserName()) {
-          bitField0_ |= 0x00000008;
-          userName_ = other.userName_;
-          onChanged();
-        }
-        if (other.hasHtmlText()) {
-          bitField0_ |= 0x00000010;
-          htmlText_ = other.htmlText_;
-          onChanged();
-        }
-        if (other.hasMarkdown()) {
-          bitField0_ |= 0x00000020;
-          markdown_ = other.markdown_;
-          onChanged();
-        }
-        if (other.hasUpdatable()) {
-          setUpdatable(other.getUpdatable());
-        }
-        if (other.hasCreatedAt()) {
-          bitField0_ |= 0x00000080;
-          createdAt_ = other.createdAt_;
-          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.sonarqube.ws.Issues.Comment parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.sonarqube.ws.Issues.Comment) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.lang.Object key_ = "";
-      /**
-       * <code>optional string key = 1;</code>
-       */
-      public boolean hasKey() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
-       * <code>optional string key = 1;</code>
-       */
-      public java.lang.String getKey() {
-        java.lang.Object ref = key_;
-        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()) {
-            key_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string key = 1;</code>
-       */
-      public com.google.protobuf.ByteString
-          getKeyBytes() {
-        java.lang.Object ref = key_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          key_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string key = 1;</code>
-       */
-      public Builder setKey(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        key_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string key = 1;</code>
-       */
-      public Builder clearKey() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        key_ = getDefaultInstance().getKey();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string key = 1;</code>
-       */
-      public Builder setKeyBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        key_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object login_ = "";
-      /**
-       * <code>optional string login = 2;</code>
-       */
-      public boolean hasLogin() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
-      }
-      /**
-       * <code>optional string login = 2;</code>
-       */
-      public java.lang.String getLogin() {
-        java.lang.Object ref = login_;
-        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()) {
-            login_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string login = 2;</code>
-       */
-      public com.google.protobuf.ByteString
-          getLoginBytes() {
-        java.lang.Object ref = login_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          login_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string login = 2;</code>
-       */
-      public Builder setLogin(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        login_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string login = 2;</code>
-       */
-      public Builder clearLogin() {
-        bitField0_ = (bitField0_ & ~0x00000002);
-        login_ = getDefaultInstance().getLogin();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string login = 2;</code>
-       */
-      public Builder setLoginBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        login_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object email_ = "";
-      /**
-       * <code>optional string email = 3;</code>
-       */
-      public boolean hasEmail() {
-        return ((bitField0_ & 0x00000004) == 0x00000004);
-      }
-      /**
-       * <code>optional string email = 3;</code>
-       */
-      public java.lang.String getEmail() {
-        java.lang.Object ref = email_;
-        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()) {
-            email_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string email = 3;</code>
-       */
-      public com.google.protobuf.ByteString
-          getEmailBytes() {
-        java.lang.Object ref = email_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          email_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string email = 3;</code>
-       */
-      public Builder setEmail(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000004;
-        email_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string email = 3;</code>
-       */
-      public Builder clearEmail() {
-        bitField0_ = (bitField0_ & ~0x00000004);
-        email_ = getDefaultInstance().getEmail();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string email = 3;</code>
-       */
-      public Builder setEmailBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000004;
-        email_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object userName_ = "";
-      /**
-       * <code>optional string userName = 4;</code>
-       */
-      public boolean hasUserName() {
-        return ((bitField0_ & 0x00000008) == 0x00000008);
-      }
-      /**
-       * <code>optional string userName = 4;</code>
-       */
-      public java.lang.String getUserName() {
-        java.lang.Object ref = userName_;
-        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()) {
-            userName_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string userName = 4;</code>
-       */
-      public com.google.protobuf.ByteString
-          getUserNameBytes() {
-        java.lang.Object ref = userName_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          userName_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string userName = 4;</code>
-       */
-      public Builder setUserName(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000008;
-        userName_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string userName = 4;</code>
-       */
-      public Builder clearUserName() {
-        bitField0_ = (bitField0_ & ~0x00000008);
-        userName_ = getDefaultInstance().getUserName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string userName = 4;</code>
-       */
-      public Builder setUserNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000008;
-        userName_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object htmlText_ = "";
-      /**
-       * <code>optional string htmlText = 5;</code>
-       */
-      public boolean hasHtmlText() {
-        return ((bitField0_ & 0x00000010) == 0x00000010);
-      }
-      /**
-       * <code>optional string htmlText = 5;</code>
-       */
-      public java.lang.String getHtmlText() {
-        java.lang.Object ref = htmlText_;
-        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()) {
-            htmlText_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string htmlText = 5;</code>
-       */
-      public com.google.protobuf.ByteString
-          getHtmlTextBytes() {
-        java.lang.Object ref = htmlText_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          htmlText_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string htmlText = 5;</code>
-       */
-      public Builder setHtmlText(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000010;
-        htmlText_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string htmlText = 5;</code>
-       */
-      public Builder clearHtmlText() {
-        bitField0_ = (bitField0_ & ~0x00000010);
-        htmlText_ = getDefaultInstance().getHtmlText();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string htmlText = 5;</code>
-       */
-      public Builder setHtmlTextBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000010;
-        htmlText_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object markdown_ = "";
-      /**
-       * <code>optional string markdown = 6;</code>
-       */
-      public boolean hasMarkdown() {
-        return ((bitField0_ & 0x00000020) == 0x00000020);
-      }
-      /**
-       * <code>optional string markdown = 6;</code>
-       */
-      public java.lang.String getMarkdown() {
-        java.lang.Object ref = markdown_;
-        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()) {
-            markdown_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string markdown = 6;</code>
-       */
-      public com.google.protobuf.ByteString
-          getMarkdownBytes() {
-        java.lang.Object ref = markdown_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          markdown_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string markdown = 6;</code>
-       */
-      public Builder setMarkdown(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000020;
-        markdown_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string markdown = 6;</code>
-       */
-      public Builder clearMarkdown() {
-        bitField0_ = (bitField0_ & ~0x00000020);
-        markdown_ = getDefaultInstance().getMarkdown();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string markdown = 6;</code>
-       */
-      public Builder setMarkdownBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000020;
-        markdown_ = value;
-        onChanged();
-        return this;
-      }
-
-      private boolean updatable_ ;
-      /**
-       * <code>optional bool updatable = 7;</code>
-       */
-      public boolean hasUpdatable() {
-        return ((bitField0_ & 0x00000040) == 0x00000040);
-      }
-      /**
-       * <code>optional bool updatable = 7;</code>
-       */
-      public boolean getUpdatable() {
-        return updatable_;
-      }
-      /**
-       * <code>optional bool updatable = 7;</code>
-       */
-      public Builder setUpdatable(boolean value) {
-        bitField0_ |= 0x00000040;
-        updatable_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional bool updatable = 7;</code>
-       */
-      public Builder clearUpdatable() {
-        bitField0_ = (bitField0_ & ~0x00000040);
-        updatable_ = false;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object createdAt_ = "";
-      /**
-       * <code>optional string createdAt = 8;</code>
-       */
-      public boolean hasCreatedAt() {
-        return ((bitField0_ & 0x00000080) == 0x00000080);
-      }
-      /**
-       * <code>optional string createdAt = 8;</code>
-       */
-      public java.lang.String getCreatedAt() {
-        java.lang.Object ref = createdAt_;
-        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()) {
-            createdAt_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string createdAt = 8;</code>
-       */
-      public com.google.protobuf.ByteString
-          getCreatedAtBytes() {
-        java.lang.Object ref = createdAt_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          createdAt_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string createdAt = 8;</code>
-       */
-      public Builder setCreatedAt(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000080;
-        createdAt_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string createdAt = 8;</code>
-       */
-      public Builder clearCreatedAt() {
-        bitField0_ = (bitField0_ & ~0x00000080);
-        createdAt_ = getDefaultInstance().getCreatedAt();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string createdAt = 8;</code>
-       */
-      public Builder setCreatedAtBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000080;
-        createdAt_ = value;
-        onChanged();
-        return this;
-      }
-
-      // @@protoc_insertion_point(builder_scope:sonarqube.ws.issues.Comment)
-    }
-
-    static {
-      defaultInstance = new Comment(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:sonarqube.ws.issues.Comment)
-  }
-
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_sonarqube_ws_issues_Search_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
-      internal_static_sonarqube_ws_issues_Search_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_sonarqube_ws_issues_Issue_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
-      internal_static_sonarqube_ws_issues_Issue_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_sonarqube_ws_issues_Comment_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
-      internal_static_sonarqube_ws_issues_Comment_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\017ws-issues.proto\022\023sonarqube.ws.issues\032\017" +
-      "ws-common.proto\"\235\002\n\006Search\022$\n\006paging\030\001 \001" +
-      "(\0132\024.sonarqube.ws.Paging\022*\n\006issues\030\002 \003(\013" +
-      "2\032.sonarqube.ws.issues.Issue\022#\n\006facets\030\003" +
-      " \003(\0132\023.sonarqube.ws.Facet\022)\n\010projects\030\004 " +
-      "\003(\0132\027.sonarqube.ws.Component\022+\n\ncomponen" +
-      "ts\030\005 \003(\0132\027.sonarqube.ws.Component\022!\n\005rul" +
-      "es\030\006 \003(\0132\022.sonarqube.ws.Rule\022!\n\005users\030\007 " +
-      "\003(\0132\022.sonarqube.ws.User\"\346\003\n\005Issue\022\013\n\003key" +
-      "\030\001 \001(\t\022\014\n\004rule\030\002 \001(\t\022\021\n\tcomponent\030\003 \001(\t\022",
-      "\023\n\013componentId\030\004 \001(\005\022\017\n\007project\030\005 \001(\t\022\022\n" +
-      "\nsubProject\030\006 \001(\t\022\014\n\004line\030\007 \001(\005\022\022\n\nresol" +
-      "ution\030\010 \001(\t\022\016\n\006status\030\t \001(\t\022\017\n\007message\030\n" +
-      " \001(\t\022\014\n\004debt\030\013 \001(\t\022\020\n\010assignee\030\014 \001(\t\022\020\n\010" +
-      "reporter\030\r \001(\t\022\021\n\tscmAuthor\030\016 \001(\t\022\022\n\nact" +
-      "ionPlan\030\017 \001(\t\022\026\n\016actionPlanName\030\020 \001(\t\022\014\n" +
-      "\004attr\030\021 \001(\t\022\014\n\004tags\030\022 \003(\t\022\023\n\013transitions" +
-      "\030\023 \003(\t\022\017\n\007actions\030\024 \003(\t\022.\n\010comments\030\025 \003(" +
-      "\0132\034.sonarqube.ws.issues.Comment\022\024\n\014creat" +
-      "ionDate\030\026 \001(\t\022\022\n\nupdateDate\030\027 \001(\t\022\022\n\nfUp",
-      "dateAge\030\030 \001(\t\022\021\n\tcloseDate\030\031 \001(\t\"\220\001\n\007Com" +
-      "ment\022\013\n\003key\030\001 \001(\t\022\r\n\005login\030\002 \001(\t\022\r\n\005emai" +
-      "l\030\003 \001(\t\022\020\n\010userName\030\004 \001(\t\022\020\n\010htmlText\030\005 " +
-      "\001(\t\022\020\n\010markdown\030\006 \001(\t\022\021\n\tupdatable\030\007 \001(\010" +
-      "\022\021\n\tcreatedAt\030\010 \001(\tB\034\n\020org.sonarqube.wsB" +
-      "\006IssuesH\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.sonarqube.ws.Common.getDescriptor(),
-        }, assigner);
-    internal_static_sonarqube_ws_issues_Search_descriptor =
-      getDescriptor().getMessageTypes().get(0);
-    internal_static_sonarqube_ws_issues_Search_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-        internal_static_sonarqube_ws_issues_Search_descriptor,
-        new java.lang.String[] { "Paging", "Issues", "Facets", "Projects", "Components", "Rules", "Users", });
-    internal_static_sonarqube_ws_issues_Issue_descriptor =
-      getDescriptor().getMessageTypes().get(1);
-    internal_static_sonarqube_ws_issues_Issue_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-        internal_static_sonarqube_ws_issues_Issue_descriptor,
-        new java.lang.String[] { "Key", "Rule", "Component", "ComponentId", "Project", "SubProject", "Line", "Resolution", "Status", "Message", "Debt", "Assignee", "Reporter", "ScmAuthor", "ActionPlan", "ActionPlanName", "Attr", "Tags", "Transitions", "Actions", "Comments", "CreationDate", "UpdateDate", "FUpdateAge", "CloseDate", });
-    internal_static_sonarqube_ws_issues_Comment_descriptor =
-      getDescriptor().getMessageTypes().get(2);
-    internal_static_sonarqube_ws_issues_Comment_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-        internal_static_sonarqube_ws_issues_Comment_descriptor,
-        new java.lang.String[] { "Key", "Login", "Email", "UserName", "HtmlText", "Markdown", "Updatable", "CreatedAt", });
-    org.sonarqube.ws.Common.getDescriptor();
-  }
-
-  // @@protoc_insertion_point(outer_class_scope)
-}
diff --git a/server/sonar-server/src/main/gen-java/org/sonarqube/ws/Rules.java b/server/sonar-server/src/main/gen-java/org/sonarqube/ws/Rules.java
deleted file mode 100644 (file)
index 346793f..0000000
+++ /dev/null
@@ -1,1537 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: ws-rules.proto
-
-package org.sonarqube.ws;
-
-public final class Rules {
-  private Rules() {}
-  public static void registerAllExtensions(
-      com.google.protobuf.ExtensionRegistry registry) {
-  }
-  public interface ListResponseOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:sonarqube.ws.rules.ListResponse)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-     */
-    java.util.List<org.sonarqube.ws.Rules.ListResponse.Rule> 
-        getRulesList();
-    /**
-     * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-     */
-    org.sonarqube.ws.Rules.ListResponse.Rule getRules(int index);
-    /**
-     * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-     */
-    int getRulesCount();
-    /**
-     * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-     */
-    java.util.List<? extends org.sonarqube.ws.Rules.ListResponse.RuleOrBuilder> 
-        getRulesOrBuilderList();
-    /**
-     * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-     */
-    org.sonarqube.ws.Rules.ListResponse.RuleOrBuilder getRulesOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code sonarqube.ws.rules.ListResponse}
-   *
-   * <pre>
-   * WS api/rules/list for internal use only
-   * </pre>
-   */
-  public static final class ListResponse extends
-      com.google.protobuf.GeneratedMessage implements
-      // @@protoc_insertion_point(message_implements:sonarqube.ws.rules.ListResponse)
-      ListResponseOrBuilder {
-    // Use ListResponse.newBuilder() to construct.
-    private ListResponse(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private ListResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final ListResponse defaultInstance;
-    public static ListResponse getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    public ListResponse getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ListResponse(
-        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: {
-              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
-                rules_ = new java.util.ArrayList<org.sonarqube.ws.Rules.ListResponse.Rule>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              rules_.add(input.readMessage(org.sonarqube.ws.Rules.ListResponse.Rule.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_ & 0x00000001) == 0x00000001)) {
-          rules_ = java.util.Collections.unmodifiableList(rules_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return org.sonarqube.ws.Rules.internal_static_sonarqube_ws_rules_ListResponse_descriptor;
-    }
-
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return org.sonarqube.ws.Rules.internal_static_sonarqube_ws_rules_ListResponse_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              org.sonarqube.ws.Rules.ListResponse.class, org.sonarqube.ws.Rules.ListResponse.Builder.class);
-    }
-
-    public static com.google.protobuf.Parser<ListResponse> PARSER =
-        new com.google.protobuf.AbstractParser<ListResponse>() {
-      public ListResponse parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ListResponse(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<ListResponse> getParserForType() {
-      return PARSER;
-    }
-
-    public interface RuleOrBuilder extends
-        // @@protoc_insertion_point(interface_extends:sonarqube.ws.rules.ListResponse.Rule)
-        com.google.protobuf.MessageOrBuilder {
-
-      /**
-       * <code>optional string repository = 1;</code>
-       */
-      boolean hasRepository();
-      /**
-       * <code>optional string repository = 1;</code>
-       */
-      java.lang.String getRepository();
-      /**
-       * <code>optional string repository = 1;</code>
-       */
-      com.google.protobuf.ByteString
-          getRepositoryBytes();
-
-      /**
-       * <code>optional string key = 2;</code>
-       */
-      boolean hasKey();
-      /**
-       * <code>optional string key = 2;</code>
-       */
-      java.lang.String getKey();
-      /**
-       * <code>optional string key = 2;</code>
-       */
-      com.google.protobuf.ByteString
-          getKeyBytes();
-
-      /**
-       * <code>optional string internal_key = 3;</code>
-       */
-      boolean hasInternalKey();
-      /**
-       * <code>optional string internal_key = 3;</code>
-       */
-      java.lang.String getInternalKey();
-      /**
-       * <code>optional string internal_key = 3;</code>
-       */
-      com.google.protobuf.ByteString
-          getInternalKeyBytes();
-    }
-    /**
-     * Protobuf type {@code sonarqube.ws.rules.ListResponse.Rule}
-     */
-    public static final class Rule extends
-        com.google.protobuf.GeneratedMessage implements
-        // @@protoc_insertion_point(message_implements:sonarqube.ws.rules.ListResponse.Rule)
-        RuleOrBuilder {
-      // Use Rule.newBuilder() to construct.
-      private Rule(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
-        super(builder);
-        this.unknownFields = builder.getUnknownFields();
-      }
-      private Rule(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-      private static final Rule defaultInstance;
-      public static Rule getDefaultInstance() {
-        return defaultInstance;
-      }
-
-      public Rule getDefaultInstanceForType() {
-        return defaultInstance;
-      }
-
-      private final com.google.protobuf.UnknownFieldSet unknownFields;
-      @java.lang.Override
-      public final com.google.protobuf.UnknownFieldSet
-          getUnknownFields() {
-        return this.unknownFields;
-      }
-      private Rule(
-          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;
-                repository_ = bs;
-                break;
-              }
-              case 18: {
-                com.google.protobuf.ByteString bs = input.readBytes();
-                bitField0_ |= 0x00000002;
-                key_ = bs;
-                break;
-              }
-              case 26: {
-                com.google.protobuf.ByteString bs = input.readBytes();
-                bitField0_ |= 0x00000004;
-                internalKey_ = 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 {
-          this.unknownFields = unknownFields.build();
-          makeExtensionsImmutable();
-        }
-      }
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return org.sonarqube.ws.Rules.internal_static_sonarqube_ws_rules_ListResponse_Rule_descriptor;
-      }
-
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return org.sonarqube.ws.Rules.internal_static_sonarqube_ws_rules_ListResponse_Rule_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                org.sonarqube.ws.Rules.ListResponse.Rule.class, org.sonarqube.ws.Rules.ListResponse.Rule.Builder.class);
-      }
-
-      public static com.google.protobuf.Parser<Rule> PARSER =
-          new com.google.protobuf.AbstractParser<Rule>() {
-        public Rule parsePartialFrom(
-            com.google.protobuf.CodedInputStream input,
-            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-            throws com.google.protobuf.InvalidProtocolBufferException {
-          return new Rule(input, extensionRegistry);
-        }
-      };
-
-      @java.lang.Override
-      public com.google.protobuf.Parser<Rule> getParserForType() {
-        return PARSER;
-      }
-
-      private int bitField0_;
-      public static final int REPOSITORY_FIELD_NUMBER = 1;
-      private java.lang.Object repository_;
-      /**
-       * <code>optional string repository = 1;</code>
-       */
-      public boolean hasRepository() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
-       * <code>optional string repository = 1;</code>
-       */
-      public java.lang.String getRepository() {
-        java.lang.Object ref = repository_;
-        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()) {
-            repository_ = s;
-          }
-          return s;
-        }
-      }
-      /**
-       * <code>optional string repository = 1;</code>
-       */
-      public com.google.protobuf.ByteString
-          getRepositoryBytes() {
-        java.lang.Object ref = repository_;
-        if (ref instanceof java.lang.String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          repository_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-
-      public static final int KEY_FIELD_NUMBER = 2;
-      private java.lang.Object key_;
-      /**
-       * <code>optional string key = 2;</code>
-       */
-      public boolean hasKey() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
-      }
-      /**
-       * <code>optional string key = 2;</code>
-       */
-      public java.lang.String getKey() {
-        java.lang.Object ref = key_;
-        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()) {
-            key_ = s;
-          }
-          return s;
-        }
-      }
-      /**
-       * <code>optional string key = 2;</code>
-       */
-      public com.google.protobuf.ByteString
-          getKeyBytes() {
-        java.lang.Object ref = key_;
-        if (ref instanceof java.lang.String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          key_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-
-      public static final int INTERNAL_KEY_FIELD_NUMBER = 3;
-      private java.lang.Object internalKey_;
-      /**
-       * <code>optional string internal_key = 3;</code>
-       */
-      public boolean hasInternalKey() {
-        return ((bitField0_ & 0x00000004) == 0x00000004);
-      }
-      /**
-       * <code>optional string internal_key = 3;</code>
-       */
-      public java.lang.String getInternalKey() {
-        java.lang.Object ref = internalKey_;
-        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()) {
-            internalKey_ = s;
-          }
-          return s;
-        }
-      }
-      /**
-       * <code>optional string internal_key = 3;</code>
-       */
-      public com.google.protobuf.ByteString
-          getInternalKeyBytes() {
-        java.lang.Object ref = internalKey_;
-        if (ref instanceof java.lang.String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          internalKey_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-
-      private void initFields() {
-        repository_ = "";
-        key_ = "";
-        internalKey_ = "";
-      }
-      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, getRepositoryBytes());
-        }
-        if (((bitField0_ & 0x00000002) == 0x00000002)) {
-          output.writeBytes(2, getKeyBytes());
-        }
-        if (((bitField0_ & 0x00000004) == 0x00000004)) {
-          output.writeBytes(3, getInternalKeyBytes());
-        }
-        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, getRepositoryBytes());
-        }
-        if (((bitField0_ & 0x00000002) == 0x00000002)) {
-          size += com.google.protobuf.CodedOutputStream
-            .computeBytesSize(2, getKeyBytes());
-        }
-        if (((bitField0_ & 0x00000004) == 0x00000004)) {
-          size += com.google.protobuf.CodedOutputStream
-            .computeBytesSize(3, getInternalKeyBytes());
-        }
-        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.sonarqube.ws.Rules.ListResponse.Rule parseFrom(
-          com.google.protobuf.ByteString data)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return PARSER.parseFrom(data);
-      }
-      public static org.sonarqube.ws.Rules.ListResponse.Rule parseFrom(
-          com.google.protobuf.ByteString data,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return PARSER.parseFrom(data, extensionRegistry);
-      }
-      public static org.sonarqube.ws.Rules.ListResponse.Rule parseFrom(byte[] data)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return PARSER.parseFrom(data);
-      }
-      public static org.sonarqube.ws.Rules.ListResponse.Rule parseFrom(
-          byte[] data,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return PARSER.parseFrom(data, extensionRegistry);
-      }
-      public static org.sonarqube.ws.Rules.ListResponse.Rule parseFrom(java.io.InputStream input)
-          throws java.io.IOException {
-        return PARSER.parseFrom(input);
-      }
-      public static org.sonarqube.ws.Rules.ListResponse.Rule parseFrom(
-          java.io.InputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        return PARSER.parseFrom(input, extensionRegistry);
-      }
-      public static org.sonarqube.ws.Rules.ListResponse.Rule parseDelimitedFrom(java.io.InputStream input)
-          throws java.io.IOException {
-        return PARSER.parseDelimitedFrom(input);
-      }
-      public static org.sonarqube.ws.Rules.ListResponse.Rule parseDelimitedFrom(
-          java.io.InputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        return PARSER.parseDelimitedFrom(input, extensionRegistry);
-      }
-      public static org.sonarqube.ws.Rules.ListResponse.Rule parseFrom(
-          com.google.protobuf.CodedInputStream input)
-          throws java.io.IOException {
-        return PARSER.parseFrom(input);
-      }
-      public static org.sonarqube.ws.Rules.ListResponse.Rule 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.sonarqube.ws.Rules.ListResponse.Rule 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 sonarqube.ws.rules.ListResponse.Rule}
-       */
-      public static final class Builder extends
-          com.google.protobuf.GeneratedMessage.Builder<Builder> implements
-          // @@protoc_insertion_point(builder_implements:sonarqube.ws.rules.ListResponse.Rule)
-          org.sonarqube.ws.Rules.ListResponse.RuleOrBuilder {
-        public static final com.google.protobuf.Descriptors.Descriptor
-            getDescriptor() {
-          return org.sonarqube.ws.Rules.internal_static_sonarqube_ws_rules_ListResponse_Rule_descriptor;
-        }
-
-        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-            internalGetFieldAccessorTable() {
-          return org.sonarqube.ws.Rules.internal_static_sonarqube_ws_rules_ListResponse_Rule_fieldAccessorTable
-              .ensureFieldAccessorsInitialized(
-                  org.sonarqube.ws.Rules.ListResponse.Rule.class, org.sonarqube.ws.Rules.ListResponse.Rule.Builder.class);
-        }
-
-        // Construct using org.sonarqube.ws.Rules.ListResponse.Rule.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();
-          repository_ = "";
-          bitField0_ = (bitField0_ & ~0x00000001);
-          key_ = "";
-          bitField0_ = (bitField0_ & ~0x00000002);
-          internalKey_ = "";
-          bitField0_ = (bitField0_ & ~0x00000004);
-          return this;
-        }
-
-        public Builder clone() {
-          return create().mergeFrom(buildPartial());
-        }
-
-        public com.google.protobuf.Descriptors.Descriptor
-            getDescriptorForType() {
-          return org.sonarqube.ws.Rules.internal_static_sonarqube_ws_rules_ListResponse_Rule_descriptor;
-        }
-
-        public org.sonarqube.ws.Rules.ListResponse.Rule getDefaultInstanceForType() {
-          return org.sonarqube.ws.Rules.ListResponse.Rule.getDefaultInstance();
-        }
-
-        public org.sonarqube.ws.Rules.ListResponse.Rule build() {
-          org.sonarqube.ws.Rules.ListResponse.Rule result = buildPartial();
-          if (!result.isInitialized()) {
-            throw newUninitializedMessageException(result);
-          }
-          return result;
-        }
-
-        public org.sonarqube.ws.Rules.ListResponse.Rule buildPartial() {
-          org.sonarqube.ws.Rules.ListResponse.Rule result = new org.sonarqube.ws.Rules.ListResponse.Rule(this);
-          int from_bitField0_ = bitField0_;
-          int to_bitField0_ = 0;
-          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-            to_bitField0_ |= 0x00000001;
-          }
-          result.repository_ = repository_;
-          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-            to_bitField0_ |= 0x00000002;
-          }
-          result.key_ = key_;
-          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
-            to_bitField0_ |= 0x00000004;
-          }
-          result.internalKey_ = internalKey_;
-          result.bitField0_ = to_bitField0_;
-          onBuilt();
-          return result;
-        }
-
-        public Builder mergeFrom(com.google.protobuf.Message other) {
-          if (other instanceof org.sonarqube.ws.Rules.ListResponse.Rule) {
-            return mergeFrom((org.sonarqube.ws.Rules.ListResponse.Rule)other);
-          } else {
-            super.mergeFrom(other);
-            return this;
-          }
-        }
-
-        public Builder mergeFrom(org.sonarqube.ws.Rules.ListResponse.Rule other) {
-          if (other == org.sonarqube.ws.Rules.ListResponse.Rule.getDefaultInstance()) return this;
-          if (other.hasRepository()) {
-            bitField0_ |= 0x00000001;
-            repository_ = other.repository_;
-            onChanged();
-          }
-          if (other.hasKey()) {
-            bitField0_ |= 0x00000002;
-            key_ = other.key_;
-            onChanged();
-          }
-          if (other.hasInternalKey()) {
-            bitField0_ |= 0x00000004;
-            internalKey_ = other.internalKey_;
-            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.sonarqube.ws.Rules.ListResponse.Rule parsedMessage = null;
-          try {
-            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-            parsedMessage = (org.sonarqube.ws.Rules.ListResponse.Rule) e.getUnfinishedMessage();
-            throw e;
-          } finally {
-            if (parsedMessage != null) {
-              mergeFrom(parsedMessage);
-            }
-          }
-          return this;
-        }
-        private int bitField0_;
-
-        private java.lang.Object repository_ = "";
-        /**
-         * <code>optional string repository = 1;</code>
-         */
-        public boolean hasRepository() {
-          return ((bitField0_ & 0x00000001) == 0x00000001);
-        }
-        /**
-         * <code>optional string repository = 1;</code>
-         */
-        public java.lang.String getRepository() {
-          java.lang.Object ref = repository_;
-          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()) {
-              repository_ = s;
-            }
-            return s;
-          } else {
-            return (java.lang.String) ref;
-          }
-        }
-        /**
-         * <code>optional string repository = 1;</code>
-         */
-        public com.google.protobuf.ByteString
-            getRepositoryBytes() {
-          java.lang.Object ref = repository_;
-          if (ref instanceof String) {
-            com.google.protobuf.ByteString b = 
-                com.google.protobuf.ByteString.copyFromUtf8(
-                    (java.lang.String) ref);
-            repository_ = b;
-            return b;
-          } else {
-            return (com.google.protobuf.ByteString) ref;
-          }
-        }
-        /**
-         * <code>optional string repository = 1;</code>
-         */
-        public Builder setRepository(
-            java.lang.String value) {
-          if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-          repository_ = value;
-          onChanged();
-          return this;
-        }
-        /**
-         * <code>optional string repository = 1;</code>
-         */
-        public Builder clearRepository() {
-          bitField0_ = (bitField0_ & ~0x00000001);
-          repository_ = getDefaultInstance().getRepository();
-          onChanged();
-          return this;
-        }
-        /**
-         * <code>optional string repository = 1;</code>
-         */
-        public Builder setRepositoryBytes(
-            com.google.protobuf.ByteString value) {
-          if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-          repository_ = value;
-          onChanged();
-          return this;
-        }
-
-        private java.lang.Object key_ = "";
-        /**
-         * <code>optional string key = 2;</code>
-         */
-        public boolean hasKey() {
-          return ((bitField0_ & 0x00000002) == 0x00000002);
-        }
-        /**
-         * <code>optional string key = 2;</code>
-         */
-        public java.lang.String getKey() {
-          java.lang.Object ref = key_;
-          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()) {
-              key_ = s;
-            }
-            return s;
-          } else {
-            return (java.lang.String) ref;
-          }
-        }
-        /**
-         * <code>optional string key = 2;</code>
-         */
-        public com.google.protobuf.ByteString
-            getKeyBytes() {
-          java.lang.Object ref = key_;
-          if (ref instanceof String) {
-            com.google.protobuf.ByteString b = 
-                com.google.protobuf.ByteString.copyFromUtf8(
-                    (java.lang.String) ref);
-            key_ = b;
-            return b;
-          } else {
-            return (com.google.protobuf.ByteString) ref;
-          }
-        }
-        /**
-         * <code>optional string key = 2;</code>
-         */
-        public Builder setKey(
-            java.lang.String value) {
-          if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-          key_ = value;
-          onChanged();
-          return this;
-        }
-        /**
-         * <code>optional string key = 2;</code>
-         */
-        public Builder clearKey() {
-          bitField0_ = (bitField0_ & ~0x00000002);
-          key_ = getDefaultInstance().getKey();
-          onChanged();
-          return this;
-        }
-        /**
-         * <code>optional string key = 2;</code>
-         */
-        public Builder setKeyBytes(
-            com.google.protobuf.ByteString value) {
-          if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-          key_ = value;
-          onChanged();
-          return this;
-        }
-
-        private java.lang.Object internalKey_ = "";
-        /**
-         * <code>optional string internal_key = 3;</code>
-         */
-        public boolean hasInternalKey() {
-          return ((bitField0_ & 0x00000004) == 0x00000004);
-        }
-        /**
-         * <code>optional string internal_key = 3;</code>
-         */
-        public java.lang.String getInternalKey() {
-          java.lang.Object ref = internalKey_;
-          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()) {
-              internalKey_ = s;
-            }
-            return s;
-          } else {
-            return (java.lang.String) ref;
-          }
-        }
-        /**
-         * <code>optional string internal_key = 3;</code>
-         */
-        public com.google.protobuf.ByteString
-            getInternalKeyBytes() {
-          java.lang.Object ref = internalKey_;
-          if (ref instanceof String) {
-            com.google.protobuf.ByteString b = 
-                com.google.protobuf.ByteString.copyFromUtf8(
-                    (java.lang.String) ref);
-            internalKey_ = b;
-            return b;
-          } else {
-            return (com.google.protobuf.ByteString) ref;
-          }
-        }
-        /**
-         * <code>optional string internal_key = 3;</code>
-         */
-        public Builder setInternalKey(
-            java.lang.String value) {
-          if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000004;
-          internalKey_ = value;
-          onChanged();
-          return this;
-        }
-        /**
-         * <code>optional string internal_key = 3;</code>
-         */
-        public Builder clearInternalKey() {
-          bitField0_ = (bitField0_ & ~0x00000004);
-          internalKey_ = getDefaultInstance().getInternalKey();
-          onChanged();
-          return this;
-        }
-        /**
-         * <code>optional string internal_key = 3;</code>
-         */
-        public Builder setInternalKeyBytes(
-            com.google.protobuf.ByteString value) {
-          if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000004;
-          internalKey_ = value;
-          onChanged();
-          return this;
-        }
-
-        // @@protoc_insertion_point(builder_scope:sonarqube.ws.rules.ListResponse.Rule)
-      }
-
-      static {
-        defaultInstance = new Rule(true);
-        defaultInstance.initFields();
-      }
-
-      // @@protoc_insertion_point(class_scope:sonarqube.ws.rules.ListResponse.Rule)
-    }
-
-    public static final int RULES_FIELD_NUMBER = 1;
-    private java.util.List<org.sonarqube.ws.Rules.ListResponse.Rule> rules_;
-    /**
-     * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-     */
-    public java.util.List<org.sonarqube.ws.Rules.ListResponse.Rule> getRulesList() {
-      return rules_;
-    }
-    /**
-     * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-     */
-    public java.util.List<? extends org.sonarqube.ws.Rules.ListResponse.RuleOrBuilder> 
-        getRulesOrBuilderList() {
-      return rules_;
-    }
-    /**
-     * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-     */
-    public int getRulesCount() {
-      return rules_.size();
-    }
-    /**
-     * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-     */
-    public org.sonarqube.ws.Rules.ListResponse.Rule getRules(int index) {
-      return rules_.get(index);
-    }
-    /**
-     * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-     */
-    public org.sonarqube.ws.Rules.ListResponse.RuleOrBuilder getRulesOrBuilder(
-        int index) {
-      return rules_.get(index);
-    }
-
-    private void initFields() {
-      rules_ = 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();
-      for (int i = 0; i < rules_.size(); i++) {
-        output.writeMessage(1, rules_.get(i));
-      }
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public int getSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < rules_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, rules_.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.sonarqube.ws.Rules.ListResponse parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonarqube.ws.Rules.ListResponse parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Rules.ListResponse parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.sonarqube.ws.Rules.ListResponse parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Rules.ListResponse parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonarqube.ws.Rules.ListResponse parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Rules.ListResponse parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
-    }
-    public static org.sonarqube.ws.Rules.ListResponse parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
-    }
-    public static org.sonarqube.ws.Rules.ListResponse parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.sonarqube.ws.Rules.ListResponse 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.sonarqube.ws.Rules.ListResponse 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 sonarqube.ws.rules.ListResponse}
-     *
-     * <pre>
-     * WS api/rules/list for internal use only
-     * </pre>
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:sonarqube.ws.rules.ListResponse)
-        org.sonarqube.ws.Rules.ListResponseOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return org.sonarqube.ws.Rules.internal_static_sonarqube_ws_rules_ListResponse_descriptor;
-      }
-
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return org.sonarqube.ws.Rules.internal_static_sonarqube_ws_rules_ListResponse_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                org.sonarqube.ws.Rules.ListResponse.class, org.sonarqube.ws.Rules.ListResponse.Builder.class);
-      }
-
-      // Construct using org.sonarqube.ws.Rules.ListResponse.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
-          getRulesFieldBuilder();
-        }
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      public Builder clear() {
-        super.clear();
-        if (rulesBuilder_ == null) {
-          rules_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          rulesBuilder_.clear();
-        }
-        return this;
-      }
-
-      public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return org.sonarqube.ws.Rules.internal_static_sonarqube_ws_rules_ListResponse_descriptor;
-      }
-
-      public org.sonarqube.ws.Rules.ListResponse getDefaultInstanceForType() {
-        return org.sonarqube.ws.Rules.ListResponse.getDefaultInstance();
-      }
-
-      public org.sonarqube.ws.Rules.ListResponse build() {
-        org.sonarqube.ws.Rules.ListResponse result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      public org.sonarqube.ws.Rules.ListResponse buildPartial() {
-        org.sonarqube.ws.Rules.ListResponse result = new org.sonarqube.ws.Rules.ListResponse(this);
-        int from_bitField0_ = bitField0_;
-        if (rulesBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) == 0x00000001)) {
-            rules_ = java.util.Collections.unmodifiableList(rules_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.rules_ = rules_;
-        } else {
-          result.rules_ = rulesBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.sonarqube.ws.Rules.ListResponse) {
-          return mergeFrom((org.sonarqube.ws.Rules.ListResponse)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(org.sonarqube.ws.Rules.ListResponse other) {
-        if (other == org.sonarqube.ws.Rules.ListResponse.getDefaultInstance()) return this;
-        if (rulesBuilder_ == null) {
-          if (!other.rules_.isEmpty()) {
-            if (rules_.isEmpty()) {
-              rules_ = other.rules_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureRulesIsMutable();
-              rules_.addAll(other.rules_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.rules_.isEmpty()) {
-            if (rulesBuilder_.isEmpty()) {
-              rulesBuilder_.dispose();
-              rulesBuilder_ = null;
-              rules_ = other.rules_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              rulesBuilder_ = 
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
-                   getRulesFieldBuilder() : null;
-            } else {
-              rulesBuilder_.addAllMessages(other.rules_);
-            }
-          }
-        }
-        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.sonarqube.ws.Rules.ListResponse parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.sonarqube.ws.Rules.ListResponse) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<org.sonarqube.ws.Rules.ListResponse.Rule> rules_ =
-        java.util.Collections.emptyList();
-      private void ensureRulesIsMutable() {
-        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
-          rules_ = new java.util.ArrayList<org.sonarqube.ws.Rules.ListResponse.Rule>(rules_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.sonarqube.ws.Rules.ListResponse.Rule, org.sonarqube.ws.Rules.ListResponse.Rule.Builder, org.sonarqube.ws.Rules.ListResponse.RuleOrBuilder> rulesBuilder_;
-
-      /**
-       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-       */
-      public java.util.List<org.sonarqube.ws.Rules.ListResponse.Rule> getRulesList() {
-        if (rulesBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(rules_);
-        } else {
-          return rulesBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-       */
-      public int getRulesCount() {
-        if (rulesBuilder_ == null) {
-          return rules_.size();
-        } else {
-          return rulesBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-       */
-      public org.sonarqube.ws.Rules.ListResponse.Rule getRules(int index) {
-        if (rulesBuilder_ == null) {
-          return rules_.get(index);
-        } else {
-          return rulesBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-       */
-      public Builder setRules(
-          int index, org.sonarqube.ws.Rules.ListResponse.Rule value) {
-        if (rulesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureRulesIsMutable();
-          rules_.set(index, value);
-          onChanged();
-        } else {
-          rulesBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-       */
-      public Builder setRules(
-          int index, org.sonarqube.ws.Rules.ListResponse.Rule.Builder builderForValue) {
-        if (rulesBuilder_ == null) {
-          ensureRulesIsMutable();
-          rules_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          rulesBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-       */
-      public Builder addRules(org.sonarqube.ws.Rules.ListResponse.Rule value) {
-        if (rulesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureRulesIsMutable();
-          rules_.add(value);
-          onChanged();
-        } else {
-          rulesBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-       */
-      public Builder addRules(
-          int index, org.sonarqube.ws.Rules.ListResponse.Rule value) {
-        if (rulesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureRulesIsMutable();
-          rules_.add(index, value);
-          onChanged();
-        } else {
-          rulesBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-       */
-      public Builder addRules(
-          org.sonarqube.ws.Rules.ListResponse.Rule.Builder builderForValue) {
-        if (rulesBuilder_ == null) {
-          ensureRulesIsMutable();
-          rules_.add(builderForValue.build());
-          onChanged();
-        } else {
-          rulesBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-       */
-      public Builder addRules(
-          int index, org.sonarqube.ws.Rules.ListResponse.Rule.Builder builderForValue) {
-        if (rulesBuilder_ == null) {
-          ensureRulesIsMutable();
-          rules_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          rulesBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-       */
-      public Builder addAllRules(
-          java.lang.Iterable<? extends org.sonarqube.ws.Rules.ListResponse.Rule> values) {
-        if (rulesBuilder_ == null) {
-          ensureRulesIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, rules_);
-          onChanged();
-        } else {
-          rulesBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-       */
-      public Builder clearRules() {
-        if (rulesBuilder_ == null) {
-          rules_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          rulesBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-       */
-      public Builder removeRules(int index) {
-        if (rulesBuilder_ == null) {
-          ensureRulesIsMutable();
-          rules_.remove(index);
-          onChanged();
-        } else {
-          rulesBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-       */
-      public org.sonarqube.ws.Rules.ListResponse.Rule.Builder getRulesBuilder(
-          int index) {
-        return getRulesFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-       */
-      public org.sonarqube.ws.Rules.ListResponse.RuleOrBuilder getRulesOrBuilder(
-          int index) {
-        if (rulesBuilder_ == null) {
-          return rules_.get(index);  } else {
-          return rulesBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-       */
-      public java.util.List<? extends org.sonarqube.ws.Rules.ListResponse.RuleOrBuilder> 
-           getRulesOrBuilderList() {
-        if (rulesBuilder_ != null) {
-          return rulesBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(rules_);
-        }
-      }
-      /**
-       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-       */
-      public org.sonarqube.ws.Rules.ListResponse.Rule.Builder addRulesBuilder() {
-        return getRulesFieldBuilder().addBuilder(
-            org.sonarqube.ws.Rules.ListResponse.Rule.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-       */
-      public org.sonarqube.ws.Rules.ListResponse.Rule.Builder addRulesBuilder(
-          int index) {
-        return getRulesFieldBuilder().addBuilder(
-            index, org.sonarqube.ws.Rules.ListResponse.Rule.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
-       */
-      public java.util.List<org.sonarqube.ws.Rules.ListResponse.Rule.Builder> 
-           getRulesBuilderList() {
-        return getRulesFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.sonarqube.ws.Rules.ListResponse.Rule, org.sonarqube.ws.Rules.ListResponse.Rule.Builder, org.sonarqube.ws.Rules.ListResponse.RuleOrBuilder> 
-          getRulesFieldBuilder() {
-        if (rulesBuilder_ == null) {
-          rulesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              org.sonarqube.ws.Rules.ListResponse.Rule, org.sonarqube.ws.Rules.ListResponse.Rule.Builder, org.sonarqube.ws.Rules.ListResponse.RuleOrBuilder>(
-                  rules_,
-                  ((bitField0_ & 0x00000001) == 0x00000001),
-                  getParentForChildren(),
-                  isClean());
-          rules_ = null;
-        }
-        return rulesBuilder_;
-      }
-
-      // @@protoc_insertion_point(builder_scope:sonarqube.ws.rules.ListResponse)
-    }
-
-    static {
-      defaultInstance = new ListResponse(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:sonarqube.ws.rules.ListResponse)
-  }
-
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_sonarqube_ws_rules_ListResponse_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
-      internal_static_sonarqube_ws_rules_ListResponse_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_sonarqube_ws_rules_ListResponse_Rule_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
-      internal_static_sonarqube_ws_rules_ListResponse_Rule_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\016ws-rules.proto\022\022sonarqube.ws.rules\"\203\001\n" +
-      "\014ListResponse\0224\n\005rules\030\001 \003(\0132%.sonarqube" +
-      ".ws.rules.ListResponse.Rule\032=\n\004Rule\022\022\n\nr" +
-      "epository\030\001 \001(\t\022\013\n\003key\030\002 \001(\t\022\024\n\014internal" +
-      "_key\030\003 \001(\tB\033\n\020org.sonarqube.wsB\005RulesH\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[] {
-        }, assigner);
-    internal_static_sonarqube_ws_rules_ListResponse_descriptor =
-      getDescriptor().getMessageTypes().get(0);
-    internal_static_sonarqube_ws_rules_ListResponse_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-        internal_static_sonarqube_ws_rules_ListResponse_descriptor,
-        new java.lang.String[] { "Rules", });
-    internal_static_sonarqube_ws_rules_ListResponse_Rule_descriptor =
-      internal_static_sonarqube_ws_rules_ListResponse_descriptor.getNestedTypes().get(0);
-    internal_static_sonarqube_ws_rules_ListResponse_Rule_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-        internal_static_sonarqube_ws_rules_ListResponse_Rule_descriptor,
-        new java.lang.String[] { "Repository", "Key", "InternalKey", });
-  }
-
-  // @@protoc_insertion_point(outer_class_scope)
-}
diff --git a/server/sonar-server/src/main/protobuf/ws-common.proto b/server/sonar-server/src/main/protobuf/ws-common.proto
deleted file mode 100644 (file)
index ecebd52..0000000
+++ /dev/null
@@ -1,81 +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.
-
-syntax = "proto2";
-
-package sonarqube.ws;
-
-option java_package = "org.sonarqube.ws";
-option java_outer_classname = "Common";
-option optimize_for = SPEED;
-
-message Paging {
-  optional int32 page_index = 1;
-  optional int32 page_size = 2;
-  optional int32 total = 3;
-  optional int32 pages = 4;
-}
-
-message Facet {
-  // kind of key
-  optional string property = 1;
-  repeated FacetValue values = 2;
-}
-
-message FacetValue {
-  optional string val = 1;
-  optional int64 count = 2;
-}
-
-message Component {
-  optional string uuid = 1;
-  optional string key = 2;
-  optional int32 id = 3;
-  optional bool enabled = 4;
-  optional string qualifier = 5;
-  optional string name = 6;
-  optional string longName = 7;
-  optional string path = 8;
-  optional int32 projectId = 9;
-  optional int32 subProjectId = 10;
-}
-
-message Rule {
-  optional string key = 1;
-  optional string name = 2;
-  optional string lang = 3;
-  // TODO what's the format ?
-  optional string desc = 4;
-  optional RuleStatus status = 5;
-  // TODO missing 'lang'
-  optional string langName = 6;
-}
-
-enum RuleStatus {
-  BETA = 0;
-  DEPRECATED = 1;
-  READY = 2;
-  REMOVED = 3;
-}
-
-message User {
-  optional string login = 1;
-  optional string name = 2;
-  optional string email = 3;
-  optional bool active = 4;
-}
diff --git a/server/sonar-server/src/main/protobuf/ws-issues.proto b/server/sonar-server/src/main/protobuf/ws-issues.proto
deleted file mode 100644 (file)
index d8129a3..0000000
+++ /dev/null
@@ -1,78 +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.
-
-syntax = "proto2";
-
-package sonarqube.ws.issues;
-
-import "ws-common.proto";
-
-option java_package = "org.sonarqube.ws";
-option java_outer_classname = "Issues";
-option optimize_for = SPEED;
-
-// Response of URL api/issues/search
-message Search {
-  // TODO errors
-  optional Paging paging = 1;
-  repeated Issue issues = 2;
-  repeated Facet facets = 3;
-  repeated Component projects = 4;
-  repeated Component components = 5;
-  repeated Rule rules = 6;
-  repeated User users = 7;
-}
-
-message Issue {
-  optional string key = 1;
-  optional string rule = 2;
-  optional string component = 3;
-  optional int32 componentId = 4;
-  optional string project = 5;
-  optional string subProject = 6;
-  optional int32 line = 7;
-  optional string resolution = 8;
-  optional string status = 9;
-  optional string message = 10;
-  optional string debt = 11;
-  optional string assignee = 12;
-  optional string reporter = 13;
-  optional string scmAuthor = 14;
-  optional string actionPlan = 15;
-  optional string actionPlanName = 16;
-  optional string attr = 17;
-  repeated string tags = 18;
-  repeated string transitions = 19;
-  repeated string actions = 20;
-  repeated Comment comments = 21;
-  optional string creationDate= 22;
-  optional string updateDate= 23;
-  optional string fUpdateAge= 24;
-  optional string closeDate= 25;
-}
-
-message Comment {
-  optional string key = 1;
-  optional string login = 2;
-  optional string email = 3;
-  optional string userName = 4;
-  optional string htmlText = 5;
-  optional string markdown = 6;
-  optional bool updatable = 7;
-  optional string createdAt = 8;
-}
diff --git a/server/sonar-server/src/main/protobuf/ws-rules.proto b/server/sonar-server/src/main/protobuf/ws-rules.proto
deleted file mode 100644 (file)
index 264137d..0000000
+++ /dev/null
@@ -1,38 +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.
-
-syntax = "proto2";
-
-package sonarqube.ws.rules;
-
-option java_package = "org.sonarqube.ws";
-option java_outer_classname = "Rules";
-option optimize_for = SPEED;
-
-// WS api/rules/list for internal use only
-message ListResponse {
-
-  message Rule {
-    optional string repository = 1;
-    optional string key = 2;
-    optional string internal_key = 3;
-  }
-
-  repeated Rule rules = 1;
-
-}
diff --git a/sonar-ws/pom.xml b/sonar-ws/pom.xml
new file mode 100644 (file)
index 0000000..95d9e89
--- /dev/null
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.codehaus.sonar</groupId>
+    <artifactId>sonar</artifactId>
+    <version>5.2-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>sonar-ws</artifactId>
+  <name>SonarQube :: Web Service</name>
+  <description>Protocol Buffers specification of Web Services</description>
+
+  <dependencies>
+    <dependency>
+      <groupId>com.google.protobuf</groupId>
+      <artifactId>protobuf-java</artifactId>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>add-source</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>add-source</goal>
+            </goals>
+            <configuration>
+              <sources>
+                <source>src/main/gen-java</source>
+              </sources>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+
+  </build>
+</project>
diff --git a/sonar-ws/src/main/gen-java/org/sonarqube/ws/Common.java b/sonar-ws/src/main/gen-java/org/sonarqube/ws/Common.java
new file mode 100644 (file)
index 0000000..75b15ce
--- /dev/null
@@ -0,0 +1,6017 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: ws-common.proto
+
+package org.sonarqube.ws;
+
+public final class Common {
+  private Common() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+  }
+  /**
+   * Protobuf enum {@code sonarqube.ws.RuleStatus}
+   */
+  public enum RuleStatus
+      implements com.google.protobuf.ProtocolMessageEnum {
+    /**
+     * <code>BETA = 0;</code>
+     */
+    BETA(0, 0),
+    /**
+     * <code>DEPRECATED = 1;</code>
+     */
+    DEPRECATED(1, 1),
+    /**
+     * <code>READY = 2;</code>
+     */
+    READY(2, 2),
+    /**
+     * <code>REMOVED = 3;</code>
+     */
+    REMOVED(3, 3),
+    ;
+
+    /**
+     * <code>BETA = 0;</code>
+     */
+    public static final int BETA_VALUE = 0;
+    /**
+     * <code>DEPRECATED = 1;</code>
+     */
+    public static final int DEPRECATED_VALUE = 1;
+    /**
+     * <code>READY = 2;</code>
+     */
+    public static final int READY_VALUE = 2;
+    /**
+     * <code>REMOVED = 3;</code>
+     */
+    public static final int REMOVED_VALUE = 3;
+
+
+    public final int getNumber() { return value; }
+
+    public static RuleStatus valueOf(int value) {
+      switch (value) {
+        case 0: return BETA;
+        case 1: return DEPRECATED;
+        case 2: return READY;
+        case 3: return REMOVED;
+        default: return null;
+      }
+    }
+
+    public static com.google.protobuf.Internal.EnumLiteMap<RuleStatus>
+        internalGetValueMap() {
+      return internalValueMap;
+    }
+    private static com.google.protobuf.Internal.EnumLiteMap<RuleStatus>
+        internalValueMap =
+          new com.google.protobuf.Internal.EnumLiteMap<RuleStatus>() {
+            public RuleStatus findValueByNumber(int number) {
+              return RuleStatus.valueOf(number);
+            }
+          };
+
+    public final com.google.protobuf.Descriptors.EnumValueDescriptor
+        getValueDescriptor() {
+      return getDescriptor().getValues().get(index);
+    }
+    public final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptorForType() {
+      return getDescriptor();
+    }
+    public static final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptor() {
+      return org.sonarqube.ws.Common.getDescriptor().getEnumTypes().get(0);
+    }
+
+    private static final RuleStatus[] VALUES = values();
+
+    public static RuleStatus valueOf(
+        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+      if (desc.getType() != getDescriptor()) {
+        throw new java.lang.IllegalArgumentException(
+          "EnumValueDescriptor is not for this type.");
+      }
+      return VALUES[desc.getIndex()];
+    }
+
+    private final int index;
+    private final int value;
+
+    private RuleStatus(int index, int value) {
+      this.index = index;
+      this.value = value;
+    }
+
+    // @@protoc_insertion_point(enum_scope:sonarqube.ws.RuleStatus)
+  }
+
+  public interface PagingOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:sonarqube.ws.Paging)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>optional int32 page_index = 1;</code>
+     */
+    boolean hasPageIndex();
+    /**
+     * <code>optional int32 page_index = 1;</code>
+     */
+    int getPageIndex();
+
+    /**
+     * <code>optional int32 page_size = 2;</code>
+     */
+    boolean hasPageSize();
+    /**
+     * <code>optional int32 page_size = 2;</code>
+     */
+    int getPageSize();
+
+    /**
+     * <code>optional int32 total = 3;</code>
+     */
+    boolean hasTotal();
+    /**
+     * <code>optional int32 total = 3;</code>
+     */
+    int getTotal();
+
+    /**
+     * <code>optional int32 pages = 4;</code>
+     */
+    boolean hasPages();
+    /**
+     * <code>optional int32 pages = 4;</code>
+     */
+    int getPages();
+  }
+  /**
+   * Protobuf type {@code sonarqube.ws.Paging}
+   */
+  public static final class Paging extends
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:sonarqube.ws.Paging)
+      PagingOrBuilder {
+    // Use Paging.newBuilder() to construct.
+    private Paging(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Paging(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Paging defaultInstance;
+    public static Paging getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Paging getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Paging(
+        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;
+              pageIndex_ = input.readInt32();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              pageSize_ = input.readInt32();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              total_ = input.readInt32();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              pages_ = 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.sonarqube.ws.Common.internal_static_sonarqube_ws_Paging_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Paging_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.sonarqube.ws.Common.Paging.class, org.sonarqube.ws.Common.Paging.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Paging> PARSER =
+        new com.google.protobuf.AbstractParser<Paging>() {
+      public Paging parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Paging(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Paging> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    public static final int PAGE_INDEX_FIELD_NUMBER = 1;
+    private int pageIndex_;
+    /**
+     * <code>optional int32 page_index = 1;</code>
+     */
+    public boolean hasPageIndex() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional int32 page_index = 1;</code>
+     */
+    public int getPageIndex() {
+      return pageIndex_;
+    }
+
+    public static final int PAGE_SIZE_FIELD_NUMBER = 2;
+    private int pageSize_;
+    /**
+     * <code>optional int32 page_size = 2;</code>
+     */
+    public boolean hasPageSize() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional int32 page_size = 2;</code>
+     */
+    public int getPageSize() {
+      return pageSize_;
+    }
+
+    public static final int TOTAL_FIELD_NUMBER = 3;
+    private int total_;
+    /**
+     * <code>optional int32 total = 3;</code>
+     */
+    public boolean hasTotal() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional int32 total = 3;</code>
+     */
+    public int getTotal() {
+      return total_;
+    }
+
+    public static final int PAGES_FIELD_NUMBER = 4;
+    private int pages_;
+    /**
+     * <code>optional int32 pages = 4;</code>
+     */
+    public boolean hasPages() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional int32 pages = 4;</code>
+     */
+    public int getPages() {
+      return pages_;
+    }
+
+    private void initFields() {
+      pageIndex_ = 0;
+      pageSize_ = 0;
+      total_ = 0;
+      pages_ = 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.writeInt32(1, pageIndex_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeInt32(2, pageSize_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeInt32(3, total_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeInt32(4, pages_);
+      }
+      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, pageIndex_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(2, pageSize_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(3, total_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(4, pages_);
+      }
+      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.sonarqube.ws.Common.Paging parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonarqube.ws.Common.Paging parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.Paging parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonarqube.ws.Common.Paging parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.Paging parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonarqube.ws.Common.Paging parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.Paging parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.sonarqube.ws.Common.Paging parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.Paging parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonarqube.ws.Common.Paging 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.sonarqube.ws.Common.Paging 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 sonarqube.ws.Paging}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:sonarqube.ws.Paging)
+        org.sonarqube.ws.Common.PagingOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Paging_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Paging_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.sonarqube.ws.Common.Paging.class, org.sonarqube.ws.Common.Paging.Builder.class);
+      }
+
+      // Construct using org.sonarqube.ws.Common.Paging.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();
+        pageIndex_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        pageSize_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        total_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        pages_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Paging_descriptor;
+      }
+
+      public org.sonarqube.ws.Common.Paging getDefaultInstanceForType() {
+        return org.sonarqube.ws.Common.Paging.getDefaultInstance();
+      }
+
+      public org.sonarqube.ws.Common.Paging build() {
+        org.sonarqube.ws.Common.Paging result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.sonarqube.ws.Common.Paging buildPartial() {
+        org.sonarqube.ws.Common.Paging result = new org.sonarqube.ws.Common.Paging(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.pageIndex_ = pageIndex_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.pageSize_ = pageSize_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.total_ = total_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.pages_ = pages_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.sonarqube.ws.Common.Paging) {
+          return mergeFrom((org.sonarqube.ws.Common.Paging)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.sonarqube.ws.Common.Paging other) {
+        if (other == org.sonarqube.ws.Common.Paging.getDefaultInstance()) return this;
+        if (other.hasPageIndex()) {
+          setPageIndex(other.getPageIndex());
+        }
+        if (other.hasPageSize()) {
+          setPageSize(other.getPageSize());
+        }
+        if (other.hasTotal()) {
+          setTotal(other.getTotal());
+        }
+        if (other.hasPages()) {
+          setPages(other.getPages());
+        }
+        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.sonarqube.ws.Common.Paging parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.sonarqube.ws.Common.Paging) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private int pageIndex_ ;
+      /**
+       * <code>optional int32 page_index = 1;</code>
+       */
+      public boolean hasPageIndex() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional int32 page_index = 1;</code>
+       */
+      public int getPageIndex() {
+        return pageIndex_;
+      }
+      /**
+       * <code>optional int32 page_index = 1;</code>
+       */
+      public Builder setPageIndex(int value) {
+        bitField0_ |= 0x00000001;
+        pageIndex_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int32 page_index = 1;</code>
+       */
+      public Builder clearPageIndex() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        pageIndex_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private int pageSize_ ;
+      /**
+       * <code>optional int32 page_size = 2;</code>
+       */
+      public boolean hasPageSize() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional int32 page_size = 2;</code>
+       */
+      public int getPageSize() {
+        return pageSize_;
+      }
+      /**
+       * <code>optional int32 page_size = 2;</code>
+       */
+      public Builder setPageSize(int value) {
+        bitField0_ |= 0x00000002;
+        pageSize_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int32 page_size = 2;</code>
+       */
+      public Builder clearPageSize() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        pageSize_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private int total_ ;
+      /**
+       * <code>optional int32 total = 3;</code>
+       */
+      public boolean hasTotal() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional int32 total = 3;</code>
+       */
+      public int getTotal() {
+        return total_;
+      }
+      /**
+       * <code>optional int32 total = 3;</code>
+       */
+      public Builder setTotal(int value) {
+        bitField0_ |= 0x00000004;
+        total_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int32 total = 3;</code>
+       */
+      public Builder clearTotal() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        total_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private int pages_ ;
+      /**
+       * <code>optional int32 pages = 4;</code>
+       */
+      public boolean hasPages() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional int32 pages = 4;</code>
+       */
+      public int getPages() {
+        return pages_;
+      }
+      /**
+       * <code>optional int32 pages = 4;</code>
+       */
+      public Builder setPages(int value) {
+        bitField0_ |= 0x00000008;
+        pages_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int32 pages = 4;</code>
+       */
+      public Builder clearPages() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        pages_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:sonarqube.ws.Paging)
+    }
+
+    static {
+      defaultInstance = new Paging(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:sonarqube.ws.Paging)
+  }
+
+  public interface FacetOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:sonarqube.ws.Facet)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>optional string property = 1;</code>
+     *
+     * <pre>
+     * kind of key
+     * </pre>
+     */
+    boolean hasProperty();
+    /**
+     * <code>optional string property = 1;</code>
+     *
+     * <pre>
+     * kind of key
+     * </pre>
+     */
+    java.lang.String getProperty();
+    /**
+     * <code>optional string property = 1;</code>
+     *
+     * <pre>
+     * kind of key
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getPropertyBytes();
+
+    /**
+     * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+     */
+    java.util.List<org.sonarqube.ws.Common.FacetValue> 
+        getValuesList();
+    /**
+     * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+     */
+    org.sonarqube.ws.Common.FacetValue getValues(int index);
+    /**
+     * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+     */
+    int getValuesCount();
+    /**
+     * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+     */
+    java.util.List<? extends org.sonarqube.ws.Common.FacetValueOrBuilder> 
+        getValuesOrBuilderList();
+    /**
+     * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+     */
+    org.sonarqube.ws.Common.FacetValueOrBuilder getValuesOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code sonarqube.ws.Facet}
+   */
+  public static final class Facet extends
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:sonarqube.ws.Facet)
+      FacetOrBuilder {
+    // Use Facet.newBuilder() to construct.
+    private Facet(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Facet(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Facet defaultInstance;
+    public static Facet getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Facet getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Facet(
+        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;
+              property_ = bs;
+              break;
+            }
+            case 18: {
+              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                values_ = new java.util.ArrayList<org.sonarqube.ws.Common.FacetValue>();
+                mutable_bitField0_ |= 0x00000002;
+              }
+              values_.add(input.readMessage(org.sonarqube.ws.Common.FacetValue.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)) {
+          values_ = java.util.Collections.unmodifiableList(values_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Facet_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Facet_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.sonarqube.ws.Common.Facet.class, org.sonarqube.ws.Common.Facet.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Facet> PARSER =
+        new com.google.protobuf.AbstractParser<Facet>() {
+      public Facet parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Facet(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Facet> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    public static final int PROPERTY_FIELD_NUMBER = 1;
+    private java.lang.Object property_;
+    /**
+     * <code>optional string property = 1;</code>
+     *
+     * <pre>
+     * kind of key
+     * </pre>
+     */
+    public boolean hasProperty() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional string property = 1;</code>
+     *
+     * <pre>
+     * kind of key
+     * </pre>
+     */
+    public java.lang.String getProperty() {
+      java.lang.Object ref = property_;
+      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()) {
+          property_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string property = 1;</code>
+     *
+     * <pre>
+     * kind of key
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getPropertyBytes() {
+      java.lang.Object ref = property_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        property_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int VALUES_FIELD_NUMBER = 2;
+    private java.util.List<org.sonarqube.ws.Common.FacetValue> values_;
+    /**
+     * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+     */
+    public java.util.List<org.sonarqube.ws.Common.FacetValue> getValuesList() {
+      return values_;
+    }
+    /**
+     * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+     */
+    public java.util.List<? extends org.sonarqube.ws.Common.FacetValueOrBuilder> 
+        getValuesOrBuilderList() {
+      return values_;
+    }
+    /**
+     * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+     */
+    public int getValuesCount() {
+      return values_.size();
+    }
+    /**
+     * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+     */
+    public org.sonarqube.ws.Common.FacetValue getValues(int index) {
+      return values_.get(index);
+    }
+    /**
+     * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+     */
+    public org.sonarqube.ws.Common.FacetValueOrBuilder getValuesOrBuilder(
+        int index) {
+      return values_.get(index);
+    }
+
+    private void initFields() {
+      property_ = "";
+      values_ = 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.writeBytes(1, getPropertyBytes());
+      }
+      for (int i = 0; i < values_.size(); i++) {
+        output.writeMessage(2, values_.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
+          .computeBytesSize(1, getPropertyBytes());
+      }
+      for (int i = 0; i < values_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, values_.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.sonarqube.ws.Common.Facet parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonarqube.ws.Common.Facet parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.Facet parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonarqube.ws.Common.Facet parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.Facet parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonarqube.ws.Common.Facet parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.Facet parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.sonarqube.ws.Common.Facet parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.Facet parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonarqube.ws.Common.Facet 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.sonarqube.ws.Common.Facet 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 sonarqube.ws.Facet}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:sonarqube.ws.Facet)
+        org.sonarqube.ws.Common.FacetOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Facet_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Facet_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.sonarqube.ws.Common.Facet.class, org.sonarqube.ws.Common.Facet.Builder.class);
+      }
+
+      // Construct using org.sonarqube.ws.Common.Facet.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getValuesFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        property_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (valuesBuilder_ == null) {
+          values_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+        } else {
+          valuesBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Facet_descriptor;
+      }
+
+      public org.sonarqube.ws.Common.Facet getDefaultInstanceForType() {
+        return org.sonarqube.ws.Common.Facet.getDefaultInstance();
+      }
+
+      public org.sonarqube.ws.Common.Facet build() {
+        org.sonarqube.ws.Common.Facet result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.sonarqube.ws.Common.Facet buildPartial() {
+        org.sonarqube.ws.Common.Facet result = new org.sonarqube.ws.Common.Facet(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.property_ = property_;
+        if (valuesBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            values_ = java.util.Collections.unmodifiableList(values_);
+            bitField0_ = (bitField0_ & ~0x00000002);
+          }
+          result.values_ = values_;
+        } else {
+          result.values_ = valuesBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.sonarqube.ws.Common.Facet) {
+          return mergeFrom((org.sonarqube.ws.Common.Facet)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.sonarqube.ws.Common.Facet other) {
+        if (other == org.sonarqube.ws.Common.Facet.getDefaultInstance()) return this;
+        if (other.hasProperty()) {
+          bitField0_ |= 0x00000001;
+          property_ = other.property_;
+          onChanged();
+        }
+        if (valuesBuilder_ == null) {
+          if (!other.values_.isEmpty()) {
+            if (values_.isEmpty()) {
+              values_ = other.values_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+            } else {
+              ensureValuesIsMutable();
+              values_.addAll(other.values_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.values_.isEmpty()) {
+            if (valuesBuilder_.isEmpty()) {
+              valuesBuilder_.dispose();
+              valuesBuilder_ = null;
+              values_ = other.values_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              valuesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getValuesFieldBuilder() : null;
+            } else {
+              valuesBuilder_.addAllMessages(other.values_);
+            }
+          }
+        }
+        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.sonarqube.ws.Common.Facet parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.sonarqube.ws.Common.Facet) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private java.lang.Object property_ = "";
+      /**
+       * <code>optional string property = 1;</code>
+       *
+       * <pre>
+       * kind of key
+       * </pre>
+       */
+      public boolean hasProperty() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional string property = 1;</code>
+       *
+       * <pre>
+       * kind of key
+       * </pre>
+       */
+      public java.lang.String getProperty() {
+        java.lang.Object ref = property_;
+        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()) {
+            property_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string property = 1;</code>
+       *
+       * <pre>
+       * kind of key
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getPropertyBytes() {
+        java.lang.Object ref = property_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          property_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string property = 1;</code>
+       *
+       * <pre>
+       * kind of key
+       * </pre>
+       */
+      public Builder setProperty(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        property_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string property = 1;</code>
+       *
+       * <pre>
+       * kind of key
+       * </pre>
+       */
+      public Builder clearProperty() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        property_ = getDefaultInstance().getProperty();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string property = 1;</code>
+       *
+       * <pre>
+       * kind of key
+       * </pre>
+       */
+      public Builder setPropertyBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        property_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.util.List<org.sonarqube.ws.Common.FacetValue> values_ =
+        java.util.Collections.emptyList();
+      private void ensureValuesIsMutable() {
+        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+          values_ = new java.util.ArrayList<org.sonarqube.ws.Common.FacetValue>(values_);
+          bitField0_ |= 0x00000002;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.sonarqube.ws.Common.FacetValue, org.sonarqube.ws.Common.FacetValue.Builder, org.sonarqube.ws.Common.FacetValueOrBuilder> valuesBuilder_;
+
+      /**
+       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+       */
+      public java.util.List<org.sonarqube.ws.Common.FacetValue> getValuesList() {
+        if (valuesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(values_);
+        } else {
+          return valuesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+       */
+      public int getValuesCount() {
+        if (valuesBuilder_ == null) {
+          return values_.size();
+        } else {
+          return valuesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+       */
+      public org.sonarqube.ws.Common.FacetValue getValues(int index) {
+        if (valuesBuilder_ == null) {
+          return values_.get(index);
+        } else {
+          return valuesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+       */
+      public Builder setValues(
+          int index, org.sonarqube.ws.Common.FacetValue value) {
+        if (valuesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureValuesIsMutable();
+          values_.set(index, value);
+          onChanged();
+        } else {
+          valuesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+       */
+      public Builder setValues(
+          int index, org.sonarqube.ws.Common.FacetValue.Builder builderForValue) {
+        if (valuesBuilder_ == null) {
+          ensureValuesIsMutable();
+          values_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          valuesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+       */
+      public Builder addValues(org.sonarqube.ws.Common.FacetValue value) {
+        if (valuesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureValuesIsMutable();
+          values_.add(value);
+          onChanged();
+        } else {
+          valuesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+       */
+      public Builder addValues(
+          int index, org.sonarqube.ws.Common.FacetValue value) {
+        if (valuesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureValuesIsMutable();
+          values_.add(index, value);
+          onChanged();
+        } else {
+          valuesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+       */
+      public Builder addValues(
+          org.sonarqube.ws.Common.FacetValue.Builder builderForValue) {
+        if (valuesBuilder_ == null) {
+          ensureValuesIsMutable();
+          values_.add(builderForValue.build());
+          onChanged();
+        } else {
+          valuesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+       */
+      public Builder addValues(
+          int index, org.sonarqube.ws.Common.FacetValue.Builder builderForValue) {
+        if (valuesBuilder_ == null) {
+          ensureValuesIsMutable();
+          values_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          valuesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+       */
+      public Builder addAllValues(
+          java.lang.Iterable<? extends org.sonarqube.ws.Common.FacetValue> values) {
+        if (valuesBuilder_ == null) {
+          ensureValuesIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, values_);
+          onChanged();
+        } else {
+          valuesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+       */
+      public Builder clearValues() {
+        if (valuesBuilder_ == null) {
+          values_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+          onChanged();
+        } else {
+          valuesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+       */
+      public Builder removeValues(int index) {
+        if (valuesBuilder_ == null) {
+          ensureValuesIsMutable();
+          values_.remove(index);
+          onChanged();
+        } else {
+          valuesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+       */
+      public org.sonarqube.ws.Common.FacetValue.Builder getValuesBuilder(
+          int index) {
+        return getValuesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+       */
+      public org.sonarqube.ws.Common.FacetValueOrBuilder getValuesOrBuilder(
+          int index) {
+        if (valuesBuilder_ == null) {
+          return values_.get(index);  } else {
+          return valuesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+       */
+      public java.util.List<? extends org.sonarqube.ws.Common.FacetValueOrBuilder> 
+           getValuesOrBuilderList() {
+        if (valuesBuilder_ != null) {
+          return valuesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(values_);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+       */
+      public org.sonarqube.ws.Common.FacetValue.Builder addValuesBuilder() {
+        return getValuesFieldBuilder().addBuilder(
+            org.sonarqube.ws.Common.FacetValue.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+       */
+      public org.sonarqube.ws.Common.FacetValue.Builder addValuesBuilder(
+          int index) {
+        return getValuesFieldBuilder().addBuilder(
+            index, org.sonarqube.ws.Common.FacetValue.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .sonarqube.ws.FacetValue values = 2;</code>
+       */
+      public java.util.List<org.sonarqube.ws.Common.FacetValue.Builder> 
+           getValuesBuilderList() {
+        return getValuesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.sonarqube.ws.Common.FacetValue, org.sonarqube.ws.Common.FacetValue.Builder, org.sonarqube.ws.Common.FacetValueOrBuilder> 
+          getValuesFieldBuilder() {
+        if (valuesBuilder_ == null) {
+          valuesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.sonarqube.ws.Common.FacetValue, org.sonarqube.ws.Common.FacetValue.Builder, org.sonarqube.ws.Common.FacetValueOrBuilder>(
+                  values_,
+                  ((bitField0_ & 0x00000002) == 0x00000002),
+                  getParentForChildren(),
+                  isClean());
+          values_ = null;
+        }
+        return valuesBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:sonarqube.ws.Facet)
+    }
+
+    static {
+      defaultInstance = new Facet(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:sonarqube.ws.Facet)
+  }
+
+  public interface FacetValueOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:sonarqube.ws.FacetValue)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>optional string val = 1;</code>
+     */
+    boolean hasVal();
+    /**
+     * <code>optional string val = 1;</code>
+     */
+    java.lang.String getVal();
+    /**
+     * <code>optional string val = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getValBytes();
+
+    /**
+     * <code>optional int64 count = 2;</code>
+     */
+    boolean hasCount();
+    /**
+     * <code>optional int64 count = 2;</code>
+     */
+    long getCount();
+  }
+  /**
+   * Protobuf type {@code sonarqube.ws.FacetValue}
+   */
+  public static final class FacetValue extends
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:sonarqube.ws.FacetValue)
+      FacetValueOrBuilder {
+    // Use FacetValue.newBuilder() to construct.
+    private FacetValue(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private FacetValue(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final FacetValue defaultInstance;
+    public static FacetValue getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public FacetValue getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private FacetValue(
+        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;
+              val_ = bs;
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              count_ = input.readInt64();
+              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.sonarqube.ws.Common.internal_static_sonarqube_ws_FacetValue_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.sonarqube.ws.Common.internal_static_sonarqube_ws_FacetValue_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.sonarqube.ws.Common.FacetValue.class, org.sonarqube.ws.Common.FacetValue.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<FacetValue> PARSER =
+        new com.google.protobuf.AbstractParser<FacetValue>() {
+      public FacetValue parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new FacetValue(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<FacetValue> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    public static final int VAL_FIELD_NUMBER = 1;
+    private java.lang.Object val_;
+    /**
+     * <code>optional string val = 1;</code>
+     */
+    public boolean hasVal() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional string val = 1;</code>
+     */
+    public java.lang.String getVal() {
+      java.lang.Object ref = val_;
+      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()) {
+          val_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string val = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValBytes() {
+      java.lang.Object ref = val_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        val_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int COUNT_FIELD_NUMBER = 2;
+    private long count_;
+    /**
+     * <code>optional int64 count = 2;</code>
+     */
+    public boolean hasCount() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional int64 count = 2;</code>
+     */
+    public long getCount() {
+      return count_;
+    }
+
+    private void initFields() {
+      val_ = "";
+      count_ = 0L;
+    }
+    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, getValBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeInt64(2, count_);
+      }
+      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, getValBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(2, count_);
+      }
+      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.sonarqube.ws.Common.FacetValue parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonarqube.ws.Common.FacetValue parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.FacetValue parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonarqube.ws.Common.FacetValue parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.FacetValue parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonarqube.ws.Common.FacetValue parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.FacetValue parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.sonarqube.ws.Common.FacetValue parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.FacetValue parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonarqube.ws.Common.FacetValue 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.sonarqube.ws.Common.FacetValue 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 sonarqube.ws.FacetValue}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:sonarqube.ws.FacetValue)
+        org.sonarqube.ws.Common.FacetValueOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_FacetValue_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_FacetValue_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.sonarqube.ws.Common.FacetValue.class, org.sonarqube.ws.Common.FacetValue.Builder.class);
+      }
+
+      // Construct using org.sonarqube.ws.Common.FacetValue.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();
+        val_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        count_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_FacetValue_descriptor;
+      }
+
+      public org.sonarqube.ws.Common.FacetValue getDefaultInstanceForType() {
+        return org.sonarqube.ws.Common.FacetValue.getDefaultInstance();
+      }
+
+      public org.sonarqube.ws.Common.FacetValue build() {
+        org.sonarqube.ws.Common.FacetValue result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.sonarqube.ws.Common.FacetValue buildPartial() {
+        org.sonarqube.ws.Common.FacetValue result = new org.sonarqube.ws.Common.FacetValue(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.val_ = val_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.count_ = count_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.sonarqube.ws.Common.FacetValue) {
+          return mergeFrom((org.sonarqube.ws.Common.FacetValue)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.sonarqube.ws.Common.FacetValue other) {
+        if (other == org.sonarqube.ws.Common.FacetValue.getDefaultInstance()) return this;
+        if (other.hasVal()) {
+          bitField0_ |= 0x00000001;
+          val_ = other.val_;
+          onChanged();
+        }
+        if (other.hasCount()) {
+          setCount(other.getCount());
+        }
+        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.sonarqube.ws.Common.FacetValue parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.sonarqube.ws.Common.FacetValue) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private java.lang.Object val_ = "";
+      /**
+       * <code>optional string val = 1;</code>
+       */
+      public boolean hasVal() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional string val = 1;</code>
+       */
+      public java.lang.String getVal() {
+        java.lang.Object ref = val_;
+        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()) {
+            val_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string val = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValBytes() {
+        java.lang.Object ref = val_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          val_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string val = 1;</code>
+       */
+      public Builder setVal(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        val_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string val = 1;</code>
+       */
+      public Builder clearVal() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        val_ = getDefaultInstance().getVal();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string val = 1;</code>
+       */
+      public Builder setValBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        val_ = value;
+        onChanged();
+        return this;
+      }
+
+      private long count_ ;
+      /**
+       * <code>optional int64 count = 2;</code>
+       */
+      public boolean hasCount() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional int64 count = 2;</code>
+       */
+      public long getCount() {
+        return count_;
+      }
+      /**
+       * <code>optional int64 count = 2;</code>
+       */
+      public Builder setCount(long value) {
+        bitField0_ |= 0x00000002;
+        count_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 count = 2;</code>
+       */
+      public Builder clearCount() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        count_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:sonarqube.ws.FacetValue)
+    }
+
+    static {
+      defaultInstance = new FacetValue(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:sonarqube.ws.FacetValue)
+  }
+
+  public interface ComponentOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:sonarqube.ws.Component)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>optional string uuid = 1;</code>
+     */
+    boolean hasUuid();
+    /**
+     * <code>optional string uuid = 1;</code>
+     */
+    java.lang.String getUuid();
+    /**
+     * <code>optional string uuid = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getUuidBytes();
+
+    /**
+     * <code>optional string key = 2;</code>
+     */
+    boolean hasKey();
+    /**
+     * <code>optional string key = 2;</code>
+     */
+    java.lang.String getKey();
+    /**
+     * <code>optional string key = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getKeyBytes();
+
+    /**
+     * <code>optional int32 id = 3;</code>
+     */
+    boolean hasId();
+    /**
+     * <code>optional int32 id = 3;</code>
+     */
+    int getId();
+
+    /**
+     * <code>optional bool enabled = 4;</code>
+     */
+    boolean hasEnabled();
+    /**
+     * <code>optional bool enabled = 4;</code>
+     */
+    boolean getEnabled();
+
+    /**
+     * <code>optional string qualifier = 5;</code>
+     */
+    boolean hasQualifier();
+    /**
+     * <code>optional string qualifier = 5;</code>
+     */
+    java.lang.String getQualifier();
+    /**
+     * <code>optional string qualifier = 5;</code>
+     */
+    com.google.protobuf.ByteString
+        getQualifierBytes();
+
+    /**
+     * <code>optional string name = 6;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>optional string name = 6;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>optional string name = 6;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    /**
+     * <code>optional string longName = 7;</code>
+     */
+    boolean hasLongName();
+    /**
+     * <code>optional string longName = 7;</code>
+     */
+    java.lang.String getLongName();
+    /**
+     * <code>optional string longName = 7;</code>
+     */
+    com.google.protobuf.ByteString
+        getLongNameBytes();
+
+    /**
+     * <code>optional string path = 8;</code>
+     */
+    boolean hasPath();
+    /**
+     * <code>optional string path = 8;</code>
+     */
+    java.lang.String getPath();
+    /**
+     * <code>optional string path = 8;</code>
+     */
+    com.google.protobuf.ByteString
+        getPathBytes();
+
+    /**
+     * <code>optional int32 projectId = 9;</code>
+     */
+    boolean hasProjectId();
+    /**
+     * <code>optional int32 projectId = 9;</code>
+     */
+    int getProjectId();
+
+    /**
+     * <code>optional int32 subProjectId = 10;</code>
+     */
+    boolean hasSubProjectId();
+    /**
+     * <code>optional int32 subProjectId = 10;</code>
+     */
+    int getSubProjectId();
+  }
+  /**
+   * Protobuf type {@code sonarqube.ws.Component}
+   */
+  public static final class Component extends
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:sonarqube.ws.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 10: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000001;
+              uuid_ = bs;
+              break;
+            }
+            case 18: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000002;
+              key_ = bs;
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              id_ = input.readInt32();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              enabled_ = input.readBool();
+              break;
+            }
+            case 42: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000010;
+              qualifier_ = bs;
+              break;
+            }
+            case 50: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000020;
+              name_ = bs;
+              break;
+            }
+            case 58: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000040;
+              longName_ = bs;
+              break;
+            }
+            case 66: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000080;
+              path_ = bs;
+              break;
+            }
+            case 72: {
+              bitField0_ |= 0x00000100;
+              projectId_ = input.readInt32();
+              break;
+            }
+            case 80: {
+              bitField0_ |= 0x00000200;
+              subProjectId_ = 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.sonarqube.ws.Common.internal_static_sonarqube_ws_Component_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Component_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.sonarqube.ws.Common.Component.class, org.sonarqube.ws.Common.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 UUID_FIELD_NUMBER = 1;
+    private java.lang.Object uuid_;
+    /**
+     * <code>optional string uuid = 1;</code>
+     */
+    public boolean hasUuid() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional string uuid = 1;</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 = 1;</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 KEY_FIELD_NUMBER = 2;
+    private java.lang.Object key_;
+    /**
+     * <code>optional string key = 2;</code>
+     */
+    public boolean hasKey() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string key = 2;</code>
+     */
+    public java.lang.String getKey() {
+      java.lang.Object ref = key_;
+      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()) {
+          key_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string key = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getKeyBytes() {
+      java.lang.Object ref = key_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        key_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int ID_FIELD_NUMBER = 3;
+    private int id_;
+    /**
+     * <code>optional int32 id = 3;</code>
+     */
+    public boolean hasId() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional int32 id = 3;</code>
+     */
+    public int getId() {
+      return id_;
+    }
+
+    public static final int ENABLED_FIELD_NUMBER = 4;
+    private boolean enabled_;
+    /**
+     * <code>optional bool enabled = 4;</code>
+     */
+    public boolean hasEnabled() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional bool enabled = 4;</code>
+     */
+    public boolean getEnabled() {
+      return enabled_;
+    }
+
+    public static final int QUALIFIER_FIELD_NUMBER = 5;
+    private java.lang.Object qualifier_;
+    /**
+     * <code>optional string qualifier = 5;</code>
+     */
+    public boolean hasQualifier() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional string qualifier = 5;</code>
+     */
+    public java.lang.String getQualifier() {
+      java.lang.Object ref = qualifier_;
+      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()) {
+          qualifier_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string qualifier = 5;</code>
+     */
+    public com.google.protobuf.ByteString
+        getQualifierBytes() {
+      java.lang.Object ref = qualifier_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        qualifier_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int NAME_FIELD_NUMBER = 6;
+    private java.lang.Object name_;
+    /**
+     * <code>optional string name = 6;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional string name = 6;</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 = 6;</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 LONGNAME_FIELD_NUMBER = 7;
+    private java.lang.Object longName_;
+    /**
+     * <code>optional string longName = 7;</code>
+     */
+    public boolean hasLongName() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional string longName = 7;</code>
+     */
+    public java.lang.String getLongName() {
+      java.lang.Object ref = longName_;
+      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()) {
+          longName_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string longName = 7;</code>
+     */
+    public com.google.protobuf.ByteString
+        getLongNameBytes() {
+      java.lang.Object ref = longName_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        longName_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int PATH_FIELD_NUMBER = 8;
+    private java.lang.Object path_;
+    /**
+     * <code>optional string path = 8;</code>
+     */
+    public boolean hasPath() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional string path = 8;</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 = 8;</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 PROJECTID_FIELD_NUMBER = 9;
+    private int projectId_;
+    /**
+     * <code>optional int32 projectId = 9;</code>
+     */
+    public boolean hasProjectId() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional int32 projectId = 9;</code>
+     */
+    public int getProjectId() {
+      return projectId_;
+    }
+
+    public static final int SUBPROJECTID_FIELD_NUMBER = 10;
+    private int subProjectId_;
+    /**
+     * <code>optional int32 subProjectId = 10;</code>
+     */
+    public boolean hasSubProjectId() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional int32 subProjectId = 10;</code>
+     */
+    public int getSubProjectId() {
+      return subProjectId_;
+    }
+
+    private void initFields() {
+      uuid_ = "";
+      key_ = "";
+      id_ = 0;
+      enabled_ = false;
+      qualifier_ = "";
+      name_ = "";
+      longName_ = "";
+      path_ = "";
+      projectId_ = 0;
+      subProjectId_ = 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.writeBytes(1, getUuidBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getKeyBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeInt32(3, id_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBool(4, enabled_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeBytes(5, getQualifierBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBytes(6, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeBytes(7, getLongNameBytes());
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeBytes(8, getPathBytes());
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeInt32(9, projectId_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeInt32(10, subProjectId_);
+      }
+      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, getUuidBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getKeyBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(3, id_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(4, enabled_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(5, getQualifierBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(7, getLongNameBytes());
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(8, getPathBytes());
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(9, projectId_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(10, subProjectId_);
+      }
+      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.sonarqube.ws.Common.Component parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonarqube.ws.Common.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.sonarqube.ws.Common.Component parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonarqube.ws.Common.Component parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.Component parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonarqube.ws.Common.Component parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.Component parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.sonarqube.ws.Common.Component parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.Component parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonarqube.ws.Common.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.sonarqube.ws.Common.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 sonarqube.ws.Component}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:sonarqube.ws.Component)
+        org.sonarqube.ws.Common.ComponentOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Component_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Component_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.sonarqube.ws.Common.Component.class, org.sonarqube.ws.Common.Component.Builder.class);
+      }
+
+      // Construct using org.sonarqube.ws.Common.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();
+        uuid_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        key_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        id_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        enabled_ = false;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        qualifier_ = "";
+        bitField0_ = (bitField0_ & ~0x00000010);
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000020);
+        longName_ = "";
+        bitField0_ = (bitField0_ & ~0x00000040);
+        path_ = "";
+        bitField0_ = (bitField0_ & ~0x00000080);
+        projectId_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000100);
+        subProjectId_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Component_descriptor;
+      }
+
+      public org.sonarqube.ws.Common.Component getDefaultInstanceForType() {
+        return org.sonarqube.ws.Common.Component.getDefaultInstance();
+      }
+
+      public org.sonarqube.ws.Common.Component build() {
+        org.sonarqube.ws.Common.Component result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.sonarqube.ws.Common.Component buildPartial() {
+        org.sonarqube.ws.Common.Component result = new org.sonarqube.ws.Common.Component(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.uuid_ = uuid_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.key_ = key_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.id_ = id_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.enabled_ = enabled_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.qualifier_ = qualifier_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.longName_ = longName_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.path_ = path_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        result.projectId_ = projectId_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        result.subProjectId_ = subProjectId_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.sonarqube.ws.Common.Component) {
+          return mergeFrom((org.sonarqube.ws.Common.Component)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.sonarqube.ws.Common.Component other) {
+        if (other == org.sonarqube.ws.Common.Component.getDefaultInstance()) return this;
+        if (other.hasUuid()) {
+          bitField0_ |= 0x00000001;
+          uuid_ = other.uuid_;
+          onChanged();
+        }
+        if (other.hasKey()) {
+          bitField0_ |= 0x00000002;
+          key_ = other.key_;
+          onChanged();
+        }
+        if (other.hasId()) {
+          setId(other.getId());
+        }
+        if (other.hasEnabled()) {
+          setEnabled(other.getEnabled());
+        }
+        if (other.hasQualifier()) {
+          bitField0_ |= 0x00000010;
+          qualifier_ = other.qualifier_;
+          onChanged();
+        }
+        if (other.hasName()) {
+          bitField0_ |= 0x00000020;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasLongName()) {
+          bitField0_ |= 0x00000040;
+          longName_ = other.longName_;
+          onChanged();
+        }
+        if (other.hasPath()) {
+          bitField0_ |= 0x00000080;
+          path_ = other.path_;
+          onChanged();
+        }
+        if (other.hasProjectId()) {
+          setProjectId(other.getProjectId());
+        }
+        if (other.hasSubProjectId()) {
+          setSubProjectId(other.getSubProjectId());
+        }
+        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.sonarqube.ws.Common.Component parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.sonarqube.ws.Common.Component) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private java.lang.Object uuid_ = "";
+      /**
+       * <code>optional string uuid = 1;</code>
+       */
+      public boolean hasUuid() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional string uuid = 1;</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 = 1;</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 = 1;</code>
+       */
+      public Builder setUuid(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        uuid_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string uuid = 1;</code>
+       */
+      public Builder clearUuid() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        uuid_ = getDefaultInstance().getUuid();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string uuid = 1;</code>
+       */
+      public Builder setUuidBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        uuid_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object key_ = "";
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      public boolean hasKey() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      public java.lang.String getKey() {
+        java.lang.Object ref = key_;
+        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()) {
+            key_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getKeyBytes() {
+        java.lang.Object ref = key_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          key_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      public Builder setKey(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        key_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      public Builder clearKey() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        key_ = getDefaultInstance().getKey();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      public Builder setKeyBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        key_ = value;
+        onChanged();
+        return this;
+      }
+
+      private int id_ ;
+      /**
+       * <code>optional int32 id = 3;</code>
+       */
+      public boolean hasId() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional int32 id = 3;</code>
+       */
+      public int getId() {
+        return id_;
+      }
+      /**
+       * <code>optional int32 id = 3;</code>
+       */
+      public Builder setId(int value) {
+        bitField0_ |= 0x00000004;
+        id_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int32 id = 3;</code>
+       */
+      public Builder clearId() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        id_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private boolean enabled_ ;
+      /**
+       * <code>optional bool enabled = 4;</code>
+       */
+      public boolean hasEnabled() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional bool enabled = 4;</code>
+       */
+      public boolean getEnabled() {
+        return enabled_;
+      }
+      /**
+       * <code>optional bool enabled = 4;</code>
+       */
+      public Builder setEnabled(boolean value) {
+        bitField0_ |= 0x00000008;
+        enabled_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool enabled = 4;</code>
+       */
+      public Builder clearEnabled() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        enabled_ = false;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object qualifier_ = "";
+      /**
+       * <code>optional string qualifier = 5;</code>
+       */
+      public boolean hasQualifier() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional string qualifier = 5;</code>
+       */
+      public java.lang.String getQualifier() {
+        java.lang.Object ref = qualifier_;
+        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()) {
+            qualifier_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string qualifier = 5;</code>
+       */
+      public com.google.protobuf.ByteString
+          getQualifierBytes() {
+        java.lang.Object ref = qualifier_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          qualifier_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string qualifier = 5;</code>
+       */
+      public Builder setQualifier(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        qualifier_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string qualifier = 5;</code>
+       */
+      public Builder clearQualifier() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        qualifier_ = getDefaultInstance().getQualifier();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string qualifier = 5;</code>
+       */
+      public Builder setQualifierBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        qualifier_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object name_ = "";
+      /**
+       * <code>optional string name = 6;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional string name = 6;</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 = 6;</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 = 6;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 6;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 6;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object longName_ = "";
+      /**
+       * <code>optional string longName = 7;</code>
+       */
+      public boolean hasLongName() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional string longName = 7;</code>
+       */
+      public java.lang.String getLongName() {
+        java.lang.Object ref = longName_;
+        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()) {
+            longName_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string longName = 7;</code>
+       */
+      public com.google.protobuf.ByteString
+          getLongNameBytes() {
+        java.lang.Object ref = longName_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          longName_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string longName = 7;</code>
+       */
+      public Builder setLongName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+        longName_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string longName = 7;</code>
+       */
+      public Builder clearLongName() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        longName_ = getDefaultInstance().getLongName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string longName = 7;</code>
+       */
+      public Builder setLongNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+        longName_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object path_ = "";
+      /**
+       * <code>optional string path = 8;</code>
+       */
+      public boolean hasPath() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional string path = 8;</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 = 8;</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 = 8;</code>
+       */
+      public Builder setPath(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000080;
+        path_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string path = 8;</code>
+       */
+      public Builder clearPath() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        path_ = getDefaultInstance().getPath();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string path = 8;</code>
+       */
+      public Builder setPathBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000080;
+        path_ = value;
+        onChanged();
+        return this;
+      }
+
+      private int projectId_ ;
+      /**
+       * <code>optional int32 projectId = 9;</code>
+       */
+      public boolean hasProjectId() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional int32 projectId = 9;</code>
+       */
+      public int getProjectId() {
+        return projectId_;
+      }
+      /**
+       * <code>optional int32 projectId = 9;</code>
+       */
+      public Builder setProjectId(int value) {
+        bitField0_ |= 0x00000100;
+        projectId_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int32 projectId = 9;</code>
+       */
+      public Builder clearProjectId() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        projectId_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private int subProjectId_ ;
+      /**
+       * <code>optional int32 subProjectId = 10;</code>
+       */
+      public boolean hasSubProjectId() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional int32 subProjectId = 10;</code>
+       */
+      public int getSubProjectId() {
+        return subProjectId_;
+      }
+      /**
+       * <code>optional int32 subProjectId = 10;</code>
+       */
+      public Builder setSubProjectId(int value) {
+        bitField0_ |= 0x00000200;
+        subProjectId_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int32 subProjectId = 10;</code>
+       */
+      public Builder clearSubProjectId() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        subProjectId_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:sonarqube.ws.Component)
+    }
+
+    static {
+      defaultInstance = new Component(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:sonarqube.ws.Component)
+  }
+
+  public interface RuleOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:sonarqube.ws.Rule)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>optional string key = 1;</code>
+     */
+    boolean hasKey();
+    /**
+     * <code>optional string key = 1;</code>
+     */
+    java.lang.String getKey();
+    /**
+     * <code>optional string key = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getKeyBytes();
+
+    /**
+     * <code>optional string name = 2;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>optional string name = 2;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>optional string name = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    /**
+     * <code>optional string lang = 3;</code>
+     */
+    boolean hasLang();
+    /**
+     * <code>optional string lang = 3;</code>
+     */
+    java.lang.String getLang();
+    /**
+     * <code>optional string lang = 3;</code>
+     */
+    com.google.protobuf.ByteString
+        getLangBytes();
+
+    /**
+     * <code>optional string desc = 4;</code>
+     *
+     * <pre>
+     * TODO what's the format ?
+     * </pre>
+     */
+    boolean hasDesc();
+    /**
+     * <code>optional string desc = 4;</code>
+     *
+     * <pre>
+     * TODO what's the format ?
+     * </pre>
+     */
+    java.lang.String getDesc();
+    /**
+     * <code>optional string desc = 4;</code>
+     *
+     * <pre>
+     * TODO what's the format ?
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getDescBytes();
+
+    /**
+     * <code>optional .sonarqube.ws.RuleStatus status = 5;</code>
+     */
+    boolean hasStatus();
+    /**
+     * <code>optional .sonarqube.ws.RuleStatus status = 5;</code>
+     */
+    org.sonarqube.ws.Common.RuleStatus getStatus();
+
+    /**
+     * <code>optional string langName = 6;</code>
+     *
+     * <pre>
+     * TODO missing 'lang'
+     * </pre>
+     */
+    boolean hasLangName();
+    /**
+     * <code>optional string langName = 6;</code>
+     *
+     * <pre>
+     * TODO missing 'lang'
+     * </pre>
+     */
+    java.lang.String getLangName();
+    /**
+     * <code>optional string langName = 6;</code>
+     *
+     * <pre>
+     * TODO missing 'lang'
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getLangNameBytes();
+  }
+  /**
+   * Protobuf type {@code sonarqube.ws.Rule}
+   */
+  public static final class Rule extends
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:sonarqube.ws.Rule)
+      RuleOrBuilder {
+    // Use Rule.newBuilder() to construct.
+    private Rule(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Rule(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Rule defaultInstance;
+    public static Rule getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Rule getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Rule(
+        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;
+              key_ = bs;
+              break;
+            }
+            case 18: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000002;
+              name_ = bs;
+              break;
+            }
+            case 26: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000004;
+              lang_ = bs;
+              break;
+            }
+            case 34: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000008;
+              desc_ = bs;
+              break;
+            }
+            case 40: {
+              int rawValue = input.readEnum();
+              org.sonarqube.ws.Common.RuleStatus value = org.sonarqube.ws.Common.RuleStatus.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(5, rawValue);
+              } else {
+                bitField0_ |= 0x00000010;
+                status_ = value;
+              }
+              break;
+            }
+            case 50: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000020;
+              langName_ = 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 {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Rule_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Rule_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.sonarqube.ws.Common.Rule.class, org.sonarqube.ws.Common.Rule.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Rule> PARSER =
+        new com.google.protobuf.AbstractParser<Rule>() {
+      public Rule parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Rule(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Rule> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    public static final int KEY_FIELD_NUMBER = 1;
+    private java.lang.Object key_;
+    /**
+     * <code>optional string key = 1;</code>
+     */
+    public boolean hasKey() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional string key = 1;</code>
+     */
+    public java.lang.String getKey() {
+      java.lang.Object ref = key_;
+      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()) {
+          key_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string key = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getKeyBytes() {
+      java.lang.Object ref = key_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        key_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int NAME_FIELD_NUMBER = 2;
+    private java.lang.Object name_;
+    /**
+     * <code>optional string name = 2;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string name = 2;</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 = 2;</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 LANG_FIELD_NUMBER = 3;
+    private java.lang.Object lang_;
+    /**
+     * <code>optional string lang = 3;</code>
+     */
+    public boolean hasLang() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional string lang = 3;</code>
+     */
+    public java.lang.String getLang() {
+      java.lang.Object ref = lang_;
+      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()) {
+          lang_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string lang = 3;</code>
+     */
+    public com.google.protobuf.ByteString
+        getLangBytes() {
+      java.lang.Object ref = lang_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        lang_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int DESC_FIELD_NUMBER = 4;
+    private java.lang.Object desc_;
+    /**
+     * <code>optional string desc = 4;</code>
+     *
+     * <pre>
+     * TODO what's the format ?
+     * </pre>
+     */
+    public boolean hasDesc() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional string desc = 4;</code>
+     *
+     * <pre>
+     * TODO what's the format ?
+     * </pre>
+     */
+    public java.lang.String getDesc() {
+      java.lang.Object ref = desc_;
+      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()) {
+          desc_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string desc = 4;</code>
+     *
+     * <pre>
+     * TODO what's the format ?
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getDescBytes() {
+      java.lang.Object ref = desc_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        desc_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int STATUS_FIELD_NUMBER = 5;
+    private org.sonarqube.ws.Common.RuleStatus status_;
+    /**
+     * <code>optional .sonarqube.ws.RuleStatus status = 5;</code>
+     */
+    public boolean hasStatus() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .sonarqube.ws.RuleStatus status = 5;</code>
+     */
+    public org.sonarqube.ws.Common.RuleStatus getStatus() {
+      return status_;
+    }
+
+    public static final int LANGNAME_FIELD_NUMBER = 6;
+    private java.lang.Object langName_;
+    /**
+     * <code>optional string langName = 6;</code>
+     *
+     * <pre>
+     * TODO missing 'lang'
+     * </pre>
+     */
+    public boolean hasLangName() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional string langName = 6;</code>
+     *
+     * <pre>
+     * TODO missing 'lang'
+     * </pre>
+     */
+    public java.lang.String getLangName() {
+      java.lang.Object ref = langName_;
+      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()) {
+          langName_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string langName = 6;</code>
+     *
+     * <pre>
+     * TODO missing 'lang'
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getLangNameBytes() {
+      java.lang.Object ref = langName_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        langName_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      key_ = "";
+      name_ = "";
+      lang_ = "";
+      desc_ = "";
+      status_ = org.sonarqube.ws.Common.RuleStatus.BETA;
+      langName_ = "";
+    }
+    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, getKeyBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(3, getLangBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBytes(4, getDescBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeEnum(5, status_.getNumber());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBytes(6, getLangNameBytes());
+      }
+      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, getKeyBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, getLangBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, getDescBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(5, status_.getNumber());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, getLangNameBytes());
+      }
+      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.sonarqube.ws.Common.Rule parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonarqube.ws.Common.Rule parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.Rule parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonarqube.ws.Common.Rule parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.Rule parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonarqube.ws.Common.Rule parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.Rule parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.sonarqube.ws.Common.Rule parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.Rule parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonarqube.ws.Common.Rule 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.sonarqube.ws.Common.Rule 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 sonarqube.ws.Rule}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:sonarqube.ws.Rule)
+        org.sonarqube.ws.Common.RuleOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Rule_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Rule_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.sonarqube.ws.Common.Rule.class, org.sonarqube.ws.Common.Rule.Builder.class);
+      }
+
+      // Construct using org.sonarqube.ws.Common.Rule.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();
+        key_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        lang_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        desc_ = "";
+        bitField0_ = (bitField0_ & ~0x00000008);
+        status_ = org.sonarqube.ws.Common.RuleStatus.BETA;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        langName_ = "";
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_Rule_descriptor;
+      }
+
+      public org.sonarqube.ws.Common.Rule getDefaultInstanceForType() {
+        return org.sonarqube.ws.Common.Rule.getDefaultInstance();
+      }
+
+      public org.sonarqube.ws.Common.Rule build() {
+        org.sonarqube.ws.Common.Rule result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.sonarqube.ws.Common.Rule buildPartial() {
+        org.sonarqube.ws.Common.Rule result = new org.sonarqube.ws.Common.Rule(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.key_ = key_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.lang_ = lang_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.desc_ = desc_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.status_ = status_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.langName_ = langName_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.sonarqube.ws.Common.Rule) {
+          return mergeFrom((org.sonarqube.ws.Common.Rule)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.sonarqube.ws.Common.Rule other) {
+        if (other == org.sonarqube.ws.Common.Rule.getDefaultInstance()) return this;
+        if (other.hasKey()) {
+          bitField0_ |= 0x00000001;
+          key_ = other.key_;
+          onChanged();
+        }
+        if (other.hasName()) {
+          bitField0_ |= 0x00000002;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasLang()) {
+          bitField0_ |= 0x00000004;
+          lang_ = other.lang_;
+          onChanged();
+        }
+        if (other.hasDesc()) {
+          bitField0_ |= 0x00000008;
+          desc_ = other.desc_;
+          onChanged();
+        }
+        if (other.hasStatus()) {
+          setStatus(other.getStatus());
+        }
+        if (other.hasLangName()) {
+          bitField0_ |= 0x00000020;
+          langName_ = other.langName_;
+          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.sonarqube.ws.Common.Rule parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.sonarqube.ws.Common.Rule) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private java.lang.Object key_ = "";
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      public boolean hasKey() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      public java.lang.String getKey() {
+        java.lang.Object ref = key_;
+        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()) {
+            key_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getKeyBytes() {
+        java.lang.Object ref = key_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          key_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      public Builder setKey(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        key_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      public Builder clearKey() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        key_ = getDefaultInstance().getKey();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      public Builder setKeyBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        key_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object name_ = "";
+      /**
+       * <code>optional string name = 2;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string name = 2;</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 = 2;</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 = 2;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object lang_ = "";
+      /**
+       * <code>optional string lang = 3;</code>
+       */
+      public boolean hasLang() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string lang = 3;</code>
+       */
+      public java.lang.String getLang() {
+        java.lang.Object ref = lang_;
+        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()) {
+            lang_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string lang = 3;</code>
+       */
+      public com.google.protobuf.ByteString
+          getLangBytes() {
+        java.lang.Object ref = lang_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          lang_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string lang = 3;</code>
+       */
+      public Builder setLang(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        lang_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string lang = 3;</code>
+       */
+      public Builder clearLang() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        lang_ = getDefaultInstance().getLang();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string lang = 3;</code>
+       */
+      public Builder setLangBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        lang_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object desc_ = "";
+      /**
+       * <code>optional string desc = 4;</code>
+       *
+       * <pre>
+       * TODO what's the format ?
+       * </pre>
+       */
+      public boolean hasDesc() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional string desc = 4;</code>
+       *
+       * <pre>
+       * TODO what's the format ?
+       * </pre>
+       */
+      public java.lang.String getDesc() {
+        java.lang.Object ref = desc_;
+        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()) {
+            desc_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string desc = 4;</code>
+       *
+       * <pre>
+       * TODO what's the format ?
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getDescBytes() {
+        java.lang.Object ref = desc_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          desc_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string desc = 4;</code>
+       *
+       * <pre>
+       * TODO what's the format ?
+       * </pre>
+       */
+      public Builder setDesc(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        desc_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string desc = 4;</code>
+       *
+       * <pre>
+       * TODO what's the format ?
+       * </pre>
+       */
+      public Builder clearDesc() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        desc_ = getDefaultInstance().getDesc();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string desc = 4;</code>
+       *
+       * <pre>
+       * TODO what's the format ?
+       * </pre>
+       */
+      public Builder setDescBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        desc_ = value;
+        onChanged();
+        return this;
+      }
+
+      private org.sonarqube.ws.Common.RuleStatus status_ = org.sonarqube.ws.Common.RuleStatus.BETA;
+      /**
+       * <code>optional .sonarqube.ws.RuleStatus status = 5;</code>
+       */
+      public boolean hasStatus() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .sonarqube.ws.RuleStatus status = 5;</code>
+       */
+      public org.sonarqube.ws.Common.RuleStatus getStatus() {
+        return status_;
+      }
+      /**
+       * <code>optional .sonarqube.ws.RuleStatus status = 5;</code>
+       */
+      public Builder setStatus(org.sonarqube.ws.Common.RuleStatus value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000010;
+        status_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .sonarqube.ws.RuleStatus status = 5;</code>
+       */
+      public Builder clearStatus() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        status_ = org.sonarqube.ws.Common.RuleStatus.BETA;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object langName_ = "";
+      /**
+       * <code>optional string langName = 6;</code>
+       *
+       * <pre>
+       * TODO missing 'lang'
+       * </pre>
+       */
+      public boolean hasLangName() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional string langName = 6;</code>
+       *
+       * <pre>
+       * TODO missing 'lang'
+       * </pre>
+       */
+      public java.lang.String getLangName() {
+        java.lang.Object ref = langName_;
+        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()) {
+            langName_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string langName = 6;</code>
+       *
+       * <pre>
+       * TODO missing 'lang'
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getLangNameBytes() {
+        java.lang.Object ref = langName_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          langName_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string langName = 6;</code>
+       *
+       * <pre>
+       * TODO missing 'lang'
+       * </pre>
+       */
+      public Builder setLangName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        langName_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string langName = 6;</code>
+       *
+       * <pre>
+       * TODO missing 'lang'
+       * </pre>
+       */
+      public Builder clearLangName() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        langName_ = getDefaultInstance().getLangName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string langName = 6;</code>
+       *
+       * <pre>
+       * TODO missing 'lang'
+       * </pre>
+       */
+      public Builder setLangNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        langName_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:sonarqube.ws.Rule)
+    }
+
+    static {
+      defaultInstance = new Rule(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:sonarqube.ws.Rule)
+  }
+
+  public interface UserOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:sonarqube.ws.User)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>optional string login = 1;</code>
+     */
+    boolean hasLogin();
+    /**
+     * <code>optional string login = 1;</code>
+     */
+    java.lang.String getLogin();
+    /**
+     * <code>optional string login = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getLoginBytes();
+
+    /**
+     * <code>optional string name = 2;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>optional string name = 2;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>optional string name = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    boolean hasEmail();
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    java.lang.String getEmail();
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    com.google.protobuf.ByteString
+        getEmailBytes();
+
+    /**
+     * <code>optional bool active = 4;</code>
+     */
+    boolean hasActive();
+    /**
+     * <code>optional bool active = 4;</code>
+     */
+    boolean getActive();
+  }
+  /**
+   * Protobuf type {@code sonarqube.ws.User}
+   */
+  public static final class User extends
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:sonarqube.ws.User)
+      UserOrBuilder {
+    // Use User.newBuilder() to construct.
+    private User(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private User(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final User defaultInstance;
+    public static User getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public User getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private User(
+        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;
+              login_ = bs;
+              break;
+            }
+            case 18: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000002;
+              name_ = bs;
+              break;
+            }
+            case 26: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000004;
+              email_ = bs;
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              active_ = 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 {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.sonarqube.ws.Common.internal_static_sonarqube_ws_User_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.sonarqube.ws.Common.internal_static_sonarqube_ws_User_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.sonarqube.ws.Common.User.class, org.sonarqube.ws.Common.User.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<User> PARSER =
+        new com.google.protobuf.AbstractParser<User>() {
+      public User parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new User(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<User> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    public static final int LOGIN_FIELD_NUMBER = 1;
+    private java.lang.Object login_;
+    /**
+     * <code>optional string login = 1;</code>
+     */
+    public boolean hasLogin() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional string login = 1;</code>
+     */
+    public java.lang.String getLogin() {
+      java.lang.Object ref = login_;
+      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()) {
+          login_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string login = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getLoginBytes() {
+      java.lang.Object ref = login_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        login_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int NAME_FIELD_NUMBER = 2;
+    private java.lang.Object name_;
+    /**
+     * <code>optional string name = 2;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string name = 2;</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 = 2;</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 EMAIL_FIELD_NUMBER = 3;
+    private java.lang.Object email_;
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    public boolean hasEmail() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    public java.lang.String getEmail() {
+      java.lang.Object ref = email_;
+      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()) {
+          email_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    public com.google.protobuf.ByteString
+        getEmailBytes() {
+      java.lang.Object ref = email_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        email_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int ACTIVE_FIELD_NUMBER = 4;
+    private boolean active_;
+    /**
+     * <code>optional bool active = 4;</code>
+     */
+    public boolean hasActive() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional bool active = 4;</code>
+     */
+    public boolean getActive() {
+      return active_;
+    }
+
+    private void initFields() {
+      login_ = "";
+      name_ = "";
+      email_ = "";
+      active_ = 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, getLoginBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(3, getEmailBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBool(4, active_);
+      }
+      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, getLoginBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, getEmailBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(4, active_);
+      }
+      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.sonarqube.ws.Common.User parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonarqube.ws.Common.User parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.User parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonarqube.ws.Common.User parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.User parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonarqube.ws.Common.User parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.User parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.sonarqube.ws.Common.User parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Common.User parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonarqube.ws.Common.User 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.sonarqube.ws.Common.User 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 sonarqube.ws.User}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:sonarqube.ws.User)
+        org.sonarqube.ws.Common.UserOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_User_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_User_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.sonarqube.ws.Common.User.class, org.sonarqube.ws.Common.User.Builder.class);
+      }
+
+      // Construct using org.sonarqube.ws.Common.User.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();
+        login_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        email_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        active_ = false;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.sonarqube.ws.Common.internal_static_sonarqube_ws_User_descriptor;
+      }
+
+      public org.sonarqube.ws.Common.User getDefaultInstanceForType() {
+        return org.sonarqube.ws.Common.User.getDefaultInstance();
+      }
+
+      public org.sonarqube.ws.Common.User build() {
+        org.sonarqube.ws.Common.User result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.sonarqube.ws.Common.User buildPartial() {
+        org.sonarqube.ws.Common.User result = new org.sonarqube.ws.Common.User(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.login_ = login_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.email_ = email_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.active_ = active_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.sonarqube.ws.Common.User) {
+          return mergeFrom((org.sonarqube.ws.Common.User)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.sonarqube.ws.Common.User other) {
+        if (other == org.sonarqube.ws.Common.User.getDefaultInstance()) return this;
+        if (other.hasLogin()) {
+          bitField0_ |= 0x00000001;
+          login_ = other.login_;
+          onChanged();
+        }
+        if (other.hasName()) {
+          bitField0_ |= 0x00000002;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasEmail()) {
+          bitField0_ |= 0x00000004;
+          email_ = other.email_;
+          onChanged();
+        }
+        if (other.hasActive()) {
+          setActive(other.getActive());
+        }
+        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.sonarqube.ws.Common.User parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.sonarqube.ws.Common.User) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private java.lang.Object login_ = "";
+      /**
+       * <code>optional string login = 1;</code>
+       */
+      public boolean hasLogin() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional string login = 1;</code>
+       */
+      public java.lang.String getLogin() {
+        java.lang.Object ref = login_;
+        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()) {
+            login_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string login = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getLoginBytes() {
+        java.lang.Object ref = login_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          login_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string login = 1;</code>
+       */
+      public Builder setLogin(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        login_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string login = 1;</code>
+       */
+      public Builder clearLogin() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        login_ = getDefaultInstance().getLogin();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string login = 1;</code>
+       */
+      public Builder setLoginBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        login_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object name_ = "";
+      /**
+       * <code>optional string name = 2;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string name = 2;</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 = 2;</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 = 2;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object email_ = "";
+      /**
+       * <code>optional string email = 3;</code>
+       */
+      public boolean hasEmail() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string email = 3;</code>
+       */
+      public java.lang.String getEmail() {
+        java.lang.Object ref = email_;
+        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()) {
+            email_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string email = 3;</code>
+       */
+      public com.google.protobuf.ByteString
+          getEmailBytes() {
+        java.lang.Object ref = email_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          email_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string email = 3;</code>
+       */
+      public Builder setEmail(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        email_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string email = 3;</code>
+       */
+      public Builder clearEmail() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        email_ = getDefaultInstance().getEmail();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string email = 3;</code>
+       */
+      public Builder setEmailBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        email_ = value;
+        onChanged();
+        return this;
+      }
+
+      private boolean active_ ;
+      /**
+       * <code>optional bool active = 4;</code>
+       */
+      public boolean hasActive() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional bool active = 4;</code>
+       */
+      public boolean getActive() {
+        return active_;
+      }
+      /**
+       * <code>optional bool active = 4;</code>
+       */
+      public Builder setActive(boolean value) {
+        bitField0_ |= 0x00000008;
+        active_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool active = 4;</code>
+       */
+      public Builder clearActive() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        active_ = false;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:sonarqube.ws.User)
+    }
+
+    static {
+      defaultInstance = new User(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:sonarqube.ws.User)
+  }
+
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_sonarqube_ws_Paging_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_sonarqube_ws_Paging_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_sonarqube_ws_Facet_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_sonarqube_ws_Facet_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_sonarqube_ws_FacetValue_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_sonarqube_ws_FacetValue_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_sonarqube_ws_Component_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_sonarqube_ws_Component_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_sonarqube_ws_Rule_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_sonarqube_ws_Rule_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_sonarqube_ws_User_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_sonarqube_ws_User_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\017ws-common.proto\022\014sonarqube.ws\"M\n\006Pagin" +
+      "g\022\022\n\npage_index\030\001 \001(\005\022\021\n\tpage_size\030\002 \001(\005" +
+      "\022\r\n\005total\030\003 \001(\005\022\r\n\005pages\030\004 \001(\005\"C\n\005Facet\022" +
+      "\020\n\010property\030\001 \001(\t\022(\n\006values\030\002 \003(\0132\030.sona" +
+      "rqube.ws.FacetValue\"(\n\nFacetValue\022\013\n\003val" +
+      "\030\001 \001(\t\022\r\n\005count\030\002 \001(\003\"\255\001\n\tComponent\022\014\n\004u" +
+      "uid\030\001 \001(\t\022\013\n\003key\030\002 \001(\t\022\n\n\002id\030\003 \001(\005\022\017\n\007en" +
+      "abled\030\004 \001(\010\022\021\n\tqualifier\030\005 \001(\t\022\014\n\004name\030\006" +
+      " \001(\t\022\020\n\010longName\030\007 \001(\t\022\014\n\004path\030\010 \001(\t\022\021\n\t" +
+      "projectId\030\t \001(\005\022\024\n\014subProjectId\030\n \001(\005\"y\n",
+      "\004Rule\022\013\n\003key\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\022\014\n\004lang" +
+      "\030\003 \001(\t\022\014\n\004desc\030\004 \001(\t\022(\n\006status\030\005 \001(\0162\030.s" +
+      "onarqube.ws.RuleStatus\022\020\n\010langName\030\006 \001(\t" +
+      "\"B\n\004User\022\r\n\005login\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\022\r\n" +
+      "\005email\030\003 \001(\t\022\016\n\006active\030\004 \001(\010*>\n\nRuleStat" +
+      "us\022\010\n\004BETA\020\000\022\016\n\nDEPRECATED\020\001\022\t\n\005READY\020\002\022" +
+      "\013\n\007REMOVED\020\003B\034\n\020org.sonarqube.wsB\006Common" +
+      "H\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[] {
+        }, assigner);
+    internal_static_sonarqube_ws_Paging_descriptor =
+      getDescriptor().getMessageTypes().get(0);
+    internal_static_sonarqube_ws_Paging_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_sonarqube_ws_Paging_descriptor,
+        new java.lang.String[] { "PageIndex", "PageSize", "Total", "Pages", });
+    internal_static_sonarqube_ws_Facet_descriptor =
+      getDescriptor().getMessageTypes().get(1);
+    internal_static_sonarqube_ws_Facet_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_sonarqube_ws_Facet_descriptor,
+        new java.lang.String[] { "Property", "Values", });
+    internal_static_sonarqube_ws_FacetValue_descriptor =
+      getDescriptor().getMessageTypes().get(2);
+    internal_static_sonarqube_ws_FacetValue_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_sonarqube_ws_FacetValue_descriptor,
+        new java.lang.String[] { "Val", "Count", });
+    internal_static_sonarqube_ws_Component_descriptor =
+      getDescriptor().getMessageTypes().get(3);
+    internal_static_sonarqube_ws_Component_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_sonarqube_ws_Component_descriptor,
+        new java.lang.String[] { "Uuid", "Key", "Id", "Enabled", "Qualifier", "Name", "LongName", "Path", "ProjectId", "SubProjectId", });
+    internal_static_sonarqube_ws_Rule_descriptor =
+      getDescriptor().getMessageTypes().get(4);
+    internal_static_sonarqube_ws_Rule_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_sonarqube_ws_Rule_descriptor,
+        new java.lang.String[] { "Key", "Name", "Lang", "Desc", "Status", "LangName", });
+    internal_static_sonarqube_ws_User_descriptor =
+      getDescriptor().getMessageTypes().get(5);
+    internal_static_sonarqube_ws_User_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_sonarqube_ws_User_descriptor,
+        new java.lang.String[] { "Login", "Name", "Email", "Active", });
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/sonar-ws/src/main/gen-java/org/sonarqube/ws/Issues.java b/sonar-ws/src/main/gen-java/org/sonarqube/ws/Issues.java
new file mode 100644 (file)
index 0000000..fe73098
--- /dev/null
@@ -0,0 +1,8696 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: ws-issues.proto
+
+package org.sonarqube.ws;
+
+public final class Issues {
+  private Issues() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+  }
+  public interface SearchOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:sonarqube.ws.issues.Search)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>optional .sonarqube.ws.Paging paging = 1;</code>
+     *
+     * <pre>
+     * TODO errors
+     * </pre>
+     */
+    boolean hasPaging();
+    /**
+     * <code>optional .sonarqube.ws.Paging paging = 1;</code>
+     *
+     * <pre>
+     * TODO errors
+     * </pre>
+     */
+    org.sonarqube.ws.Common.Paging getPaging();
+    /**
+     * <code>optional .sonarqube.ws.Paging paging = 1;</code>
+     *
+     * <pre>
+     * TODO errors
+     * </pre>
+     */
+    org.sonarqube.ws.Common.PagingOrBuilder getPagingOrBuilder();
+
+    /**
+     * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+     */
+    java.util.List<org.sonarqube.ws.Issues.Issue> 
+        getIssuesList();
+    /**
+     * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+     */
+    org.sonarqube.ws.Issues.Issue getIssues(int index);
+    /**
+     * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+     */
+    int getIssuesCount();
+    /**
+     * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+     */
+    java.util.List<? extends org.sonarqube.ws.Issues.IssueOrBuilder> 
+        getIssuesOrBuilderList();
+    /**
+     * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+     */
+    org.sonarqube.ws.Issues.IssueOrBuilder getIssuesOrBuilder(
+        int index);
+
+    /**
+     * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+     */
+    java.util.List<org.sonarqube.ws.Common.Facet> 
+        getFacetsList();
+    /**
+     * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+     */
+    org.sonarqube.ws.Common.Facet getFacets(int index);
+    /**
+     * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+     */
+    int getFacetsCount();
+    /**
+     * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+     */
+    java.util.List<? extends org.sonarqube.ws.Common.FacetOrBuilder> 
+        getFacetsOrBuilderList();
+    /**
+     * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+     */
+    org.sonarqube.ws.Common.FacetOrBuilder getFacetsOrBuilder(
+        int index);
+
+    /**
+     * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+     */
+    java.util.List<org.sonarqube.ws.Common.Component> 
+        getProjectsList();
+    /**
+     * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+     */
+    org.sonarqube.ws.Common.Component getProjects(int index);
+    /**
+     * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+     */
+    int getProjectsCount();
+    /**
+     * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+     */
+    java.util.List<? extends org.sonarqube.ws.Common.ComponentOrBuilder> 
+        getProjectsOrBuilderList();
+    /**
+     * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+     */
+    org.sonarqube.ws.Common.ComponentOrBuilder getProjectsOrBuilder(
+        int index);
+
+    /**
+     * <code>repeated .sonarqube.ws.Component components = 5;</code>
+     */
+    java.util.List<org.sonarqube.ws.Common.Component> 
+        getComponentsList();
+    /**
+     * <code>repeated .sonarqube.ws.Component components = 5;</code>
+     */
+    org.sonarqube.ws.Common.Component getComponents(int index);
+    /**
+     * <code>repeated .sonarqube.ws.Component components = 5;</code>
+     */
+    int getComponentsCount();
+    /**
+     * <code>repeated .sonarqube.ws.Component components = 5;</code>
+     */
+    java.util.List<? extends org.sonarqube.ws.Common.ComponentOrBuilder> 
+        getComponentsOrBuilderList();
+    /**
+     * <code>repeated .sonarqube.ws.Component components = 5;</code>
+     */
+    org.sonarqube.ws.Common.ComponentOrBuilder getComponentsOrBuilder(
+        int index);
+
+    /**
+     * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+     */
+    java.util.List<org.sonarqube.ws.Common.Rule> 
+        getRulesList();
+    /**
+     * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+     */
+    org.sonarqube.ws.Common.Rule getRules(int index);
+    /**
+     * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+     */
+    int getRulesCount();
+    /**
+     * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+     */
+    java.util.List<? extends org.sonarqube.ws.Common.RuleOrBuilder> 
+        getRulesOrBuilderList();
+    /**
+     * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+     */
+    org.sonarqube.ws.Common.RuleOrBuilder getRulesOrBuilder(
+        int index);
+
+    /**
+     * <code>repeated .sonarqube.ws.User users = 7;</code>
+     */
+    java.util.List<org.sonarqube.ws.Common.User> 
+        getUsersList();
+    /**
+     * <code>repeated .sonarqube.ws.User users = 7;</code>
+     */
+    org.sonarqube.ws.Common.User getUsers(int index);
+    /**
+     * <code>repeated .sonarqube.ws.User users = 7;</code>
+     */
+    int getUsersCount();
+    /**
+     * <code>repeated .sonarqube.ws.User users = 7;</code>
+     */
+    java.util.List<? extends org.sonarqube.ws.Common.UserOrBuilder> 
+        getUsersOrBuilderList();
+    /**
+     * <code>repeated .sonarqube.ws.User users = 7;</code>
+     */
+    org.sonarqube.ws.Common.UserOrBuilder getUsersOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code sonarqube.ws.issues.Search}
+   *
+   * <pre>
+   * Response of URL api/issues/search
+   * </pre>
+   */
+  public static final class Search extends
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:sonarqube.ws.issues.Search)
+      SearchOrBuilder {
+    // Use Search.newBuilder() to construct.
+    private Search(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Search(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Search defaultInstance;
+    public static Search getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Search getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Search(
+        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: {
+              org.sonarqube.ws.Common.Paging.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = paging_.toBuilder();
+              }
+              paging_ = input.readMessage(org.sonarqube.ws.Common.Paging.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(paging_);
+                paging_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 18: {
+              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                issues_ = new java.util.ArrayList<org.sonarqube.ws.Issues.Issue>();
+                mutable_bitField0_ |= 0x00000002;
+              }
+              issues_.add(input.readMessage(org.sonarqube.ws.Issues.Issue.PARSER, extensionRegistry));
+              break;
+            }
+            case 26: {
+              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+                facets_ = new java.util.ArrayList<org.sonarqube.ws.Common.Facet>();
+                mutable_bitField0_ |= 0x00000004;
+              }
+              facets_.add(input.readMessage(org.sonarqube.ws.Common.Facet.PARSER, extensionRegistry));
+              break;
+            }
+            case 34: {
+              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+                projects_ = new java.util.ArrayList<org.sonarqube.ws.Common.Component>();
+                mutable_bitField0_ |= 0x00000008;
+              }
+              projects_.add(input.readMessage(org.sonarqube.ws.Common.Component.PARSER, extensionRegistry));
+              break;
+            }
+            case 42: {
+              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+                components_ = new java.util.ArrayList<org.sonarqube.ws.Common.Component>();
+                mutable_bitField0_ |= 0x00000010;
+              }
+              components_.add(input.readMessage(org.sonarqube.ws.Common.Component.PARSER, extensionRegistry));
+              break;
+            }
+            case 50: {
+              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+                rules_ = new java.util.ArrayList<org.sonarqube.ws.Common.Rule>();
+                mutable_bitField0_ |= 0x00000020;
+              }
+              rules_.add(input.readMessage(org.sonarqube.ws.Common.Rule.PARSER, extensionRegistry));
+              break;
+            }
+            case 58: {
+              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+                users_ = new java.util.ArrayList<org.sonarqube.ws.Common.User>();
+                mutable_bitField0_ |= 0x00000040;
+              }
+              users_.add(input.readMessage(org.sonarqube.ws.Common.User.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)) {
+          issues_ = java.util.Collections.unmodifiableList(issues_);
+        }
+        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+          facets_ = java.util.Collections.unmodifiableList(facets_);
+        }
+        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+          projects_ = java.util.Collections.unmodifiableList(projects_);
+        }
+        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+          components_ = java.util.Collections.unmodifiableList(components_);
+        }
+        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+          rules_ = java.util.Collections.unmodifiableList(rules_);
+        }
+        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+          users_ = java.util.Collections.unmodifiableList(users_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Search_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Search_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.sonarqube.ws.Issues.Search.class, org.sonarqube.ws.Issues.Search.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Search> PARSER =
+        new com.google.protobuf.AbstractParser<Search>() {
+      public Search parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Search(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Search> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    public static final int PAGING_FIELD_NUMBER = 1;
+    private org.sonarqube.ws.Common.Paging paging_;
+    /**
+     * <code>optional .sonarqube.ws.Paging paging = 1;</code>
+     *
+     * <pre>
+     * TODO errors
+     * </pre>
+     */
+    public boolean hasPaging() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .sonarqube.ws.Paging paging = 1;</code>
+     *
+     * <pre>
+     * TODO errors
+     * </pre>
+     */
+    public org.sonarqube.ws.Common.Paging getPaging() {
+      return paging_;
+    }
+    /**
+     * <code>optional .sonarqube.ws.Paging paging = 1;</code>
+     *
+     * <pre>
+     * TODO errors
+     * </pre>
+     */
+    public org.sonarqube.ws.Common.PagingOrBuilder getPagingOrBuilder() {
+      return paging_;
+    }
+
+    public static final int ISSUES_FIELD_NUMBER = 2;
+    private java.util.List<org.sonarqube.ws.Issues.Issue> issues_;
+    /**
+     * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+     */
+    public java.util.List<org.sonarqube.ws.Issues.Issue> getIssuesList() {
+      return issues_;
+    }
+    /**
+     * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+     */
+    public java.util.List<? extends org.sonarqube.ws.Issues.IssueOrBuilder> 
+        getIssuesOrBuilderList() {
+      return issues_;
+    }
+    /**
+     * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+     */
+    public int getIssuesCount() {
+      return issues_.size();
+    }
+    /**
+     * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+     */
+    public org.sonarqube.ws.Issues.Issue getIssues(int index) {
+      return issues_.get(index);
+    }
+    /**
+     * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+     */
+    public org.sonarqube.ws.Issues.IssueOrBuilder getIssuesOrBuilder(
+        int index) {
+      return issues_.get(index);
+    }
+
+    public static final int FACETS_FIELD_NUMBER = 3;
+    private java.util.List<org.sonarqube.ws.Common.Facet> facets_;
+    /**
+     * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+     */
+    public java.util.List<org.sonarqube.ws.Common.Facet> getFacetsList() {
+      return facets_;
+    }
+    /**
+     * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+     */
+    public java.util.List<? extends org.sonarqube.ws.Common.FacetOrBuilder> 
+        getFacetsOrBuilderList() {
+      return facets_;
+    }
+    /**
+     * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+     */
+    public int getFacetsCount() {
+      return facets_.size();
+    }
+    /**
+     * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+     */
+    public org.sonarqube.ws.Common.Facet getFacets(int index) {
+      return facets_.get(index);
+    }
+    /**
+     * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+     */
+    public org.sonarqube.ws.Common.FacetOrBuilder getFacetsOrBuilder(
+        int index) {
+      return facets_.get(index);
+    }
+
+    public static final int PROJECTS_FIELD_NUMBER = 4;
+    private java.util.List<org.sonarqube.ws.Common.Component> projects_;
+    /**
+     * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+     */
+    public java.util.List<org.sonarqube.ws.Common.Component> getProjectsList() {
+      return projects_;
+    }
+    /**
+     * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+     */
+    public java.util.List<? extends org.sonarqube.ws.Common.ComponentOrBuilder> 
+        getProjectsOrBuilderList() {
+      return projects_;
+    }
+    /**
+     * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+     */
+    public int getProjectsCount() {
+      return projects_.size();
+    }
+    /**
+     * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+     */
+    public org.sonarqube.ws.Common.Component getProjects(int index) {
+      return projects_.get(index);
+    }
+    /**
+     * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+     */
+    public org.sonarqube.ws.Common.ComponentOrBuilder getProjectsOrBuilder(
+        int index) {
+      return projects_.get(index);
+    }
+
+    public static final int COMPONENTS_FIELD_NUMBER = 5;
+    private java.util.List<org.sonarqube.ws.Common.Component> components_;
+    /**
+     * <code>repeated .sonarqube.ws.Component components = 5;</code>
+     */
+    public java.util.List<org.sonarqube.ws.Common.Component> getComponentsList() {
+      return components_;
+    }
+    /**
+     * <code>repeated .sonarqube.ws.Component components = 5;</code>
+     */
+    public java.util.List<? extends org.sonarqube.ws.Common.ComponentOrBuilder> 
+        getComponentsOrBuilderList() {
+      return components_;
+    }
+    /**
+     * <code>repeated .sonarqube.ws.Component components = 5;</code>
+     */
+    public int getComponentsCount() {
+      return components_.size();
+    }
+    /**
+     * <code>repeated .sonarqube.ws.Component components = 5;</code>
+     */
+    public org.sonarqube.ws.Common.Component getComponents(int index) {
+      return components_.get(index);
+    }
+    /**
+     * <code>repeated .sonarqube.ws.Component components = 5;</code>
+     */
+    public org.sonarqube.ws.Common.ComponentOrBuilder getComponentsOrBuilder(
+        int index) {
+      return components_.get(index);
+    }
+
+    public static final int RULES_FIELD_NUMBER = 6;
+    private java.util.List<org.sonarqube.ws.Common.Rule> rules_;
+    /**
+     * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+     */
+    public java.util.List<org.sonarqube.ws.Common.Rule> getRulesList() {
+      return rules_;
+    }
+    /**
+     * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+     */
+    public java.util.List<? extends org.sonarqube.ws.Common.RuleOrBuilder> 
+        getRulesOrBuilderList() {
+      return rules_;
+    }
+    /**
+     * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+     */
+    public int getRulesCount() {
+      return rules_.size();
+    }
+    /**
+     * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+     */
+    public org.sonarqube.ws.Common.Rule getRules(int index) {
+      return rules_.get(index);
+    }
+    /**
+     * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+     */
+    public org.sonarqube.ws.Common.RuleOrBuilder getRulesOrBuilder(
+        int index) {
+      return rules_.get(index);
+    }
+
+    public static final int USERS_FIELD_NUMBER = 7;
+    private java.util.List<org.sonarqube.ws.Common.User> users_;
+    /**
+     * <code>repeated .sonarqube.ws.User users = 7;</code>
+     */
+    public java.util.List<org.sonarqube.ws.Common.User> getUsersList() {
+      return users_;
+    }
+    /**
+     * <code>repeated .sonarqube.ws.User users = 7;</code>
+     */
+    public java.util.List<? extends org.sonarqube.ws.Common.UserOrBuilder> 
+        getUsersOrBuilderList() {
+      return users_;
+    }
+    /**
+     * <code>repeated .sonarqube.ws.User users = 7;</code>
+     */
+    public int getUsersCount() {
+      return users_.size();
+    }
+    /**
+     * <code>repeated .sonarqube.ws.User users = 7;</code>
+     */
+    public org.sonarqube.ws.Common.User getUsers(int index) {
+      return users_.get(index);
+    }
+    /**
+     * <code>repeated .sonarqube.ws.User users = 7;</code>
+     */
+    public org.sonarqube.ws.Common.UserOrBuilder getUsersOrBuilder(
+        int index) {
+      return users_.get(index);
+    }
+
+    private void initFields() {
+      paging_ = org.sonarqube.ws.Common.Paging.getDefaultInstance();
+      issues_ = java.util.Collections.emptyList();
+      facets_ = java.util.Collections.emptyList();
+      projects_ = java.util.Collections.emptyList();
+      components_ = java.util.Collections.emptyList();
+      rules_ = java.util.Collections.emptyList();
+      users_ = 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.writeMessage(1, paging_);
+      }
+      for (int i = 0; i < issues_.size(); i++) {
+        output.writeMessage(2, issues_.get(i));
+      }
+      for (int i = 0; i < facets_.size(); i++) {
+        output.writeMessage(3, facets_.get(i));
+      }
+      for (int i = 0; i < projects_.size(); i++) {
+        output.writeMessage(4, projects_.get(i));
+      }
+      for (int i = 0; i < components_.size(); i++) {
+        output.writeMessage(5, components_.get(i));
+      }
+      for (int i = 0; i < rules_.size(); i++) {
+        output.writeMessage(6, rules_.get(i));
+      }
+      for (int i = 0; i < users_.size(); i++) {
+        output.writeMessage(7, users_.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
+          .computeMessageSize(1, paging_);
+      }
+      for (int i = 0; i < issues_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, issues_.get(i));
+      }
+      for (int i = 0; i < facets_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, facets_.get(i));
+      }
+      for (int i = 0; i < projects_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, projects_.get(i));
+      }
+      for (int i = 0; i < components_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, components_.get(i));
+      }
+      for (int i = 0; i < rules_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, rules_.get(i));
+      }
+      for (int i = 0; i < users_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, users_.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.sonarqube.ws.Issues.Search parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonarqube.ws.Issues.Search parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Issues.Search parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonarqube.ws.Issues.Search parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Issues.Search parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonarqube.ws.Issues.Search parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Issues.Search parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.sonarqube.ws.Issues.Search parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Issues.Search parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonarqube.ws.Issues.Search 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.sonarqube.ws.Issues.Search 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 sonarqube.ws.issues.Search}
+     *
+     * <pre>
+     * Response of URL api/issues/search
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:sonarqube.ws.issues.Search)
+        org.sonarqube.ws.Issues.SearchOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Search_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Search_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.sonarqube.ws.Issues.Search.class, org.sonarqube.ws.Issues.Search.Builder.class);
+      }
+
+      // Construct using org.sonarqube.ws.Issues.Search.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getPagingFieldBuilder();
+          getIssuesFieldBuilder();
+          getFacetsFieldBuilder();
+          getProjectsFieldBuilder();
+          getComponentsFieldBuilder();
+          getRulesFieldBuilder();
+          getUsersFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (pagingBuilder_ == null) {
+          paging_ = org.sonarqube.ws.Common.Paging.getDefaultInstance();
+        } else {
+          pagingBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (issuesBuilder_ == null) {
+          issues_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+        } else {
+          issuesBuilder_.clear();
+        }
+        if (facetsBuilder_ == null) {
+          facets_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000004);
+        } else {
+          facetsBuilder_.clear();
+        }
+        if (projectsBuilder_ == null) {
+          projects_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+        } else {
+          projectsBuilder_.clear();
+        }
+        if (componentsBuilder_ == null) {
+          components_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000010);
+        } else {
+          componentsBuilder_.clear();
+        }
+        if (rulesBuilder_ == null) {
+          rules_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000020);
+        } else {
+          rulesBuilder_.clear();
+        }
+        if (usersBuilder_ == null) {
+          users_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000040);
+        } else {
+          usersBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Search_descriptor;
+      }
+
+      public org.sonarqube.ws.Issues.Search getDefaultInstanceForType() {
+        return org.sonarqube.ws.Issues.Search.getDefaultInstance();
+      }
+
+      public org.sonarqube.ws.Issues.Search build() {
+        org.sonarqube.ws.Issues.Search result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.sonarqube.ws.Issues.Search buildPartial() {
+        org.sonarqube.ws.Issues.Search result = new org.sonarqube.ws.Issues.Search(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (pagingBuilder_ == null) {
+          result.paging_ = paging_;
+        } else {
+          result.paging_ = pagingBuilder_.build();
+        }
+        if (issuesBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            issues_ = java.util.Collections.unmodifiableList(issues_);
+            bitField0_ = (bitField0_ & ~0x00000002);
+          }
+          result.issues_ = issues_;
+        } else {
+          result.issues_ = issuesBuilder_.build();
+        }
+        if (facetsBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            facets_ = java.util.Collections.unmodifiableList(facets_);
+            bitField0_ = (bitField0_ & ~0x00000004);
+          }
+          result.facets_ = facets_;
+        } else {
+          result.facets_ = facetsBuilder_.build();
+        }
+        if (projectsBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008)) {
+            projects_ = java.util.Collections.unmodifiableList(projects_);
+            bitField0_ = (bitField0_ & ~0x00000008);
+          }
+          result.projects_ = projects_;
+        } else {
+          result.projects_ = projectsBuilder_.build();
+        }
+        if (componentsBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010)) {
+            components_ = java.util.Collections.unmodifiableList(components_);
+            bitField0_ = (bitField0_ & ~0x00000010);
+          }
+          result.components_ = components_;
+        } else {
+          result.components_ = componentsBuilder_.build();
+        }
+        if (rulesBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020)) {
+            rules_ = java.util.Collections.unmodifiableList(rules_);
+            bitField0_ = (bitField0_ & ~0x00000020);
+          }
+          result.rules_ = rules_;
+        } else {
+          result.rules_ = rulesBuilder_.build();
+        }
+        if (usersBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040)) {
+            users_ = java.util.Collections.unmodifiableList(users_);
+            bitField0_ = (bitField0_ & ~0x00000040);
+          }
+          result.users_ = users_;
+        } else {
+          result.users_ = usersBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.sonarqube.ws.Issues.Search) {
+          return mergeFrom((org.sonarqube.ws.Issues.Search)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.sonarqube.ws.Issues.Search other) {
+        if (other == org.sonarqube.ws.Issues.Search.getDefaultInstance()) return this;
+        if (other.hasPaging()) {
+          mergePaging(other.getPaging());
+        }
+        if (issuesBuilder_ == null) {
+          if (!other.issues_.isEmpty()) {
+            if (issues_.isEmpty()) {
+              issues_ = other.issues_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+            } else {
+              ensureIssuesIsMutable();
+              issues_.addAll(other.issues_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.issues_.isEmpty()) {
+            if (issuesBuilder_.isEmpty()) {
+              issuesBuilder_.dispose();
+              issuesBuilder_ = null;
+              issues_ = other.issues_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              issuesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getIssuesFieldBuilder() : null;
+            } else {
+              issuesBuilder_.addAllMessages(other.issues_);
+            }
+          }
+        }
+        if (facetsBuilder_ == null) {
+          if (!other.facets_.isEmpty()) {
+            if (facets_.isEmpty()) {
+              facets_ = other.facets_;
+              bitField0_ = (bitField0_ & ~0x00000004);
+            } else {
+              ensureFacetsIsMutable();
+              facets_.addAll(other.facets_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.facets_.isEmpty()) {
+            if (facetsBuilder_.isEmpty()) {
+              facetsBuilder_.dispose();
+              facetsBuilder_ = null;
+              facets_ = other.facets_;
+              bitField0_ = (bitField0_ & ~0x00000004);
+              facetsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getFacetsFieldBuilder() : null;
+            } else {
+              facetsBuilder_.addAllMessages(other.facets_);
+            }
+          }
+        }
+        if (projectsBuilder_ == null) {
+          if (!other.projects_.isEmpty()) {
+            if (projects_.isEmpty()) {
+              projects_ = other.projects_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+            } else {
+              ensureProjectsIsMutable();
+              projects_.addAll(other.projects_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.projects_.isEmpty()) {
+            if (projectsBuilder_.isEmpty()) {
+              projectsBuilder_.dispose();
+              projectsBuilder_ = null;
+              projects_ = other.projects_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+              projectsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getProjectsFieldBuilder() : null;
+            } else {
+              projectsBuilder_.addAllMessages(other.projects_);
+            }
+          }
+        }
+        if (componentsBuilder_ == null) {
+          if (!other.components_.isEmpty()) {
+            if (components_.isEmpty()) {
+              components_ = other.components_;
+              bitField0_ = (bitField0_ & ~0x00000010);
+            } else {
+              ensureComponentsIsMutable();
+              components_.addAll(other.components_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.components_.isEmpty()) {
+            if (componentsBuilder_.isEmpty()) {
+              componentsBuilder_.dispose();
+              componentsBuilder_ = null;
+              components_ = other.components_;
+              bitField0_ = (bitField0_ & ~0x00000010);
+              componentsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getComponentsFieldBuilder() : null;
+            } else {
+              componentsBuilder_.addAllMessages(other.components_);
+            }
+          }
+        }
+        if (rulesBuilder_ == null) {
+          if (!other.rules_.isEmpty()) {
+            if (rules_.isEmpty()) {
+              rules_ = other.rules_;
+              bitField0_ = (bitField0_ & ~0x00000020);
+            } else {
+              ensureRulesIsMutable();
+              rules_.addAll(other.rules_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.rules_.isEmpty()) {
+            if (rulesBuilder_.isEmpty()) {
+              rulesBuilder_.dispose();
+              rulesBuilder_ = null;
+              rules_ = other.rules_;
+              bitField0_ = (bitField0_ & ~0x00000020);
+              rulesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getRulesFieldBuilder() : null;
+            } else {
+              rulesBuilder_.addAllMessages(other.rules_);
+            }
+          }
+        }
+        if (usersBuilder_ == null) {
+          if (!other.users_.isEmpty()) {
+            if (users_.isEmpty()) {
+              users_ = other.users_;
+              bitField0_ = (bitField0_ & ~0x00000040);
+            } else {
+              ensureUsersIsMutable();
+              users_.addAll(other.users_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.users_.isEmpty()) {
+            if (usersBuilder_.isEmpty()) {
+              usersBuilder_.dispose();
+              usersBuilder_ = null;
+              users_ = other.users_;
+              bitField0_ = (bitField0_ & ~0x00000040);
+              usersBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getUsersFieldBuilder() : null;
+            } else {
+              usersBuilder_.addAllMessages(other.users_);
+            }
+          }
+        }
+        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.sonarqube.ws.Issues.Search parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.sonarqube.ws.Issues.Search) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private org.sonarqube.ws.Common.Paging paging_ = org.sonarqube.ws.Common.Paging.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.sonarqube.ws.Common.Paging, org.sonarqube.ws.Common.Paging.Builder, org.sonarqube.ws.Common.PagingOrBuilder> pagingBuilder_;
+      /**
+       * <code>optional .sonarqube.ws.Paging paging = 1;</code>
+       *
+       * <pre>
+       * TODO errors
+       * </pre>
+       */
+      public boolean hasPaging() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .sonarqube.ws.Paging paging = 1;</code>
+       *
+       * <pre>
+       * TODO errors
+       * </pre>
+       */
+      public org.sonarqube.ws.Common.Paging getPaging() {
+        if (pagingBuilder_ == null) {
+          return paging_;
+        } else {
+          return pagingBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .sonarqube.ws.Paging paging = 1;</code>
+       *
+       * <pre>
+       * TODO errors
+       * </pre>
+       */
+      public Builder setPaging(org.sonarqube.ws.Common.Paging value) {
+        if (pagingBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          paging_ = value;
+          onChanged();
+        } else {
+          pagingBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .sonarqube.ws.Paging paging = 1;</code>
+       *
+       * <pre>
+       * TODO errors
+       * </pre>
+       */
+      public Builder setPaging(
+          org.sonarqube.ws.Common.Paging.Builder builderForValue) {
+        if (pagingBuilder_ == null) {
+          paging_ = builderForValue.build();
+          onChanged();
+        } else {
+          pagingBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .sonarqube.ws.Paging paging = 1;</code>
+       *
+       * <pre>
+       * TODO errors
+       * </pre>
+       */
+      public Builder mergePaging(org.sonarqube.ws.Common.Paging value) {
+        if (pagingBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              paging_ != org.sonarqube.ws.Common.Paging.getDefaultInstance()) {
+            paging_ =
+              org.sonarqube.ws.Common.Paging.newBuilder(paging_).mergeFrom(value).buildPartial();
+          } else {
+            paging_ = value;
+          }
+          onChanged();
+        } else {
+          pagingBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .sonarqube.ws.Paging paging = 1;</code>
+       *
+       * <pre>
+       * TODO errors
+       * </pre>
+       */
+      public Builder clearPaging() {
+        if (pagingBuilder_ == null) {
+          paging_ = org.sonarqube.ws.Common.Paging.getDefaultInstance();
+          onChanged();
+        } else {
+          pagingBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .sonarqube.ws.Paging paging = 1;</code>
+       *
+       * <pre>
+       * TODO errors
+       * </pre>
+       */
+      public org.sonarqube.ws.Common.Paging.Builder getPagingBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getPagingFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .sonarqube.ws.Paging paging = 1;</code>
+       *
+       * <pre>
+       * TODO errors
+       * </pre>
+       */
+      public org.sonarqube.ws.Common.PagingOrBuilder getPagingOrBuilder() {
+        if (pagingBuilder_ != null) {
+          return pagingBuilder_.getMessageOrBuilder();
+        } else {
+          return paging_;
+        }
+      }
+      /**
+       * <code>optional .sonarqube.ws.Paging paging = 1;</code>
+       *
+       * <pre>
+       * TODO errors
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.sonarqube.ws.Common.Paging, org.sonarqube.ws.Common.Paging.Builder, org.sonarqube.ws.Common.PagingOrBuilder> 
+          getPagingFieldBuilder() {
+        if (pagingBuilder_ == null) {
+          pagingBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.sonarqube.ws.Common.Paging, org.sonarqube.ws.Common.Paging.Builder, org.sonarqube.ws.Common.PagingOrBuilder>(
+                  getPaging(),
+                  getParentForChildren(),
+                  isClean());
+          paging_ = null;
+        }
+        return pagingBuilder_;
+      }
+
+      private java.util.List<org.sonarqube.ws.Issues.Issue> issues_ =
+        java.util.Collections.emptyList();
+      private void ensureIssuesIsMutable() {
+        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+          issues_ = new java.util.ArrayList<org.sonarqube.ws.Issues.Issue>(issues_);
+          bitField0_ |= 0x00000002;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.sonarqube.ws.Issues.Issue, org.sonarqube.ws.Issues.Issue.Builder, org.sonarqube.ws.Issues.IssueOrBuilder> issuesBuilder_;
+
+      /**
+       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+       */
+      public java.util.List<org.sonarqube.ws.Issues.Issue> getIssuesList() {
+        if (issuesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(issues_);
+        } else {
+          return issuesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+       */
+      public int getIssuesCount() {
+        if (issuesBuilder_ == null) {
+          return issues_.size();
+        } else {
+          return issuesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+       */
+      public org.sonarqube.ws.Issues.Issue getIssues(int index) {
+        if (issuesBuilder_ == null) {
+          return issues_.get(index);
+        } else {
+          return issuesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+       */
+      public Builder setIssues(
+          int index, org.sonarqube.ws.Issues.Issue value) {
+        if (issuesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureIssuesIsMutable();
+          issues_.set(index, value);
+          onChanged();
+        } else {
+          issuesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+       */
+      public Builder setIssues(
+          int index, org.sonarqube.ws.Issues.Issue.Builder builderForValue) {
+        if (issuesBuilder_ == null) {
+          ensureIssuesIsMutable();
+          issues_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          issuesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+       */
+      public Builder addIssues(org.sonarqube.ws.Issues.Issue value) {
+        if (issuesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureIssuesIsMutable();
+          issues_.add(value);
+          onChanged();
+        } else {
+          issuesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+       */
+      public Builder addIssues(
+          int index, org.sonarqube.ws.Issues.Issue value) {
+        if (issuesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureIssuesIsMutable();
+          issues_.add(index, value);
+          onChanged();
+        } else {
+          issuesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+       */
+      public Builder addIssues(
+          org.sonarqube.ws.Issues.Issue.Builder builderForValue) {
+        if (issuesBuilder_ == null) {
+          ensureIssuesIsMutable();
+          issues_.add(builderForValue.build());
+          onChanged();
+        } else {
+          issuesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+       */
+      public Builder addIssues(
+          int index, org.sonarqube.ws.Issues.Issue.Builder builderForValue) {
+        if (issuesBuilder_ == null) {
+          ensureIssuesIsMutable();
+          issues_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          issuesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+       */
+      public Builder addAllIssues(
+          java.lang.Iterable<? extends org.sonarqube.ws.Issues.Issue> values) {
+        if (issuesBuilder_ == null) {
+          ensureIssuesIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, issues_);
+          onChanged();
+        } else {
+          issuesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+       */
+      public Builder clearIssues() {
+        if (issuesBuilder_ == null) {
+          issues_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+          onChanged();
+        } else {
+          issuesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+       */
+      public Builder removeIssues(int index) {
+        if (issuesBuilder_ == null) {
+          ensureIssuesIsMutable();
+          issues_.remove(index);
+          onChanged();
+        } else {
+          issuesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+       */
+      public org.sonarqube.ws.Issues.Issue.Builder getIssuesBuilder(
+          int index) {
+        return getIssuesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+       */
+      public org.sonarqube.ws.Issues.IssueOrBuilder getIssuesOrBuilder(
+          int index) {
+        if (issuesBuilder_ == null) {
+          return issues_.get(index);  } else {
+          return issuesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+       */
+      public java.util.List<? extends org.sonarqube.ws.Issues.IssueOrBuilder> 
+           getIssuesOrBuilderList() {
+        if (issuesBuilder_ != null) {
+          return issuesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(issues_);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+       */
+      public org.sonarqube.ws.Issues.Issue.Builder addIssuesBuilder() {
+        return getIssuesFieldBuilder().addBuilder(
+            org.sonarqube.ws.Issues.Issue.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+       */
+      public org.sonarqube.ws.Issues.Issue.Builder addIssuesBuilder(
+          int index) {
+        return getIssuesFieldBuilder().addBuilder(
+            index, org.sonarqube.ws.Issues.Issue.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Issue issues = 2;</code>
+       */
+      public java.util.List<org.sonarqube.ws.Issues.Issue.Builder> 
+           getIssuesBuilderList() {
+        return getIssuesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.sonarqube.ws.Issues.Issue, org.sonarqube.ws.Issues.Issue.Builder, org.sonarqube.ws.Issues.IssueOrBuilder> 
+          getIssuesFieldBuilder() {
+        if (issuesBuilder_ == null) {
+          issuesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.sonarqube.ws.Issues.Issue, org.sonarqube.ws.Issues.Issue.Builder, org.sonarqube.ws.Issues.IssueOrBuilder>(
+                  issues_,
+                  ((bitField0_ & 0x00000002) == 0x00000002),
+                  getParentForChildren(),
+                  isClean());
+          issues_ = null;
+        }
+        return issuesBuilder_;
+      }
+
+      private java.util.List<org.sonarqube.ws.Common.Facet> facets_ =
+        java.util.Collections.emptyList();
+      private void ensureFacetsIsMutable() {
+        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
+          facets_ = new java.util.ArrayList<org.sonarqube.ws.Common.Facet>(facets_);
+          bitField0_ |= 0x00000004;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.sonarqube.ws.Common.Facet, org.sonarqube.ws.Common.Facet.Builder, org.sonarqube.ws.Common.FacetOrBuilder> facetsBuilder_;
+
+      /**
+       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+       */
+      public java.util.List<org.sonarqube.ws.Common.Facet> getFacetsList() {
+        if (facetsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(facets_);
+        } else {
+          return facetsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+       */
+      public int getFacetsCount() {
+        if (facetsBuilder_ == null) {
+          return facets_.size();
+        } else {
+          return facetsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+       */
+      public org.sonarqube.ws.Common.Facet getFacets(int index) {
+        if (facetsBuilder_ == null) {
+          return facets_.get(index);
+        } else {
+          return facetsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+       */
+      public Builder setFacets(
+          int index, org.sonarqube.ws.Common.Facet value) {
+        if (facetsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureFacetsIsMutable();
+          facets_.set(index, value);
+          onChanged();
+        } else {
+          facetsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+       */
+      public Builder setFacets(
+          int index, org.sonarqube.ws.Common.Facet.Builder builderForValue) {
+        if (facetsBuilder_ == null) {
+          ensureFacetsIsMutable();
+          facets_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          facetsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+       */
+      public Builder addFacets(org.sonarqube.ws.Common.Facet value) {
+        if (facetsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureFacetsIsMutable();
+          facets_.add(value);
+          onChanged();
+        } else {
+          facetsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+       */
+      public Builder addFacets(
+          int index, org.sonarqube.ws.Common.Facet value) {
+        if (facetsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureFacetsIsMutable();
+          facets_.add(index, value);
+          onChanged();
+        } else {
+          facetsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+       */
+      public Builder addFacets(
+          org.sonarqube.ws.Common.Facet.Builder builderForValue) {
+        if (facetsBuilder_ == null) {
+          ensureFacetsIsMutable();
+          facets_.add(builderForValue.build());
+          onChanged();
+        } else {
+          facetsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+       */
+      public Builder addFacets(
+          int index, org.sonarqube.ws.Common.Facet.Builder builderForValue) {
+        if (facetsBuilder_ == null) {
+          ensureFacetsIsMutable();
+          facets_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          facetsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+       */
+      public Builder addAllFacets(
+          java.lang.Iterable<? extends org.sonarqube.ws.Common.Facet> values) {
+        if (facetsBuilder_ == null) {
+          ensureFacetsIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, facets_);
+          onChanged();
+        } else {
+          facetsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+       */
+      public Builder clearFacets() {
+        if (facetsBuilder_ == null) {
+          facets_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000004);
+          onChanged();
+        } else {
+          facetsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+       */
+      public Builder removeFacets(int index) {
+        if (facetsBuilder_ == null) {
+          ensureFacetsIsMutable();
+          facets_.remove(index);
+          onChanged();
+        } else {
+          facetsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+       */
+      public org.sonarqube.ws.Common.Facet.Builder getFacetsBuilder(
+          int index) {
+        return getFacetsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+       */
+      public org.sonarqube.ws.Common.FacetOrBuilder getFacetsOrBuilder(
+          int index) {
+        if (facetsBuilder_ == null) {
+          return facets_.get(index);  } else {
+          return facetsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+       */
+      public java.util.List<? extends org.sonarqube.ws.Common.FacetOrBuilder> 
+           getFacetsOrBuilderList() {
+        if (facetsBuilder_ != null) {
+          return facetsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(facets_);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+       */
+      public org.sonarqube.ws.Common.Facet.Builder addFacetsBuilder() {
+        return getFacetsFieldBuilder().addBuilder(
+            org.sonarqube.ws.Common.Facet.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+       */
+      public org.sonarqube.ws.Common.Facet.Builder addFacetsBuilder(
+          int index) {
+        return getFacetsFieldBuilder().addBuilder(
+            index, org.sonarqube.ws.Common.Facet.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Facet facets = 3;</code>
+       */
+      public java.util.List<org.sonarqube.ws.Common.Facet.Builder> 
+           getFacetsBuilderList() {
+        return getFacetsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.sonarqube.ws.Common.Facet, org.sonarqube.ws.Common.Facet.Builder, org.sonarqube.ws.Common.FacetOrBuilder> 
+          getFacetsFieldBuilder() {
+        if (facetsBuilder_ == null) {
+          facetsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.sonarqube.ws.Common.Facet, org.sonarqube.ws.Common.Facet.Builder, org.sonarqube.ws.Common.FacetOrBuilder>(
+                  facets_,
+                  ((bitField0_ & 0x00000004) == 0x00000004),
+                  getParentForChildren(),
+                  isClean());
+          facets_ = null;
+        }
+        return facetsBuilder_;
+      }
+
+      private java.util.List<org.sonarqube.ws.Common.Component> projects_ =
+        java.util.Collections.emptyList();
+      private void ensureProjectsIsMutable() {
+        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
+          projects_ = new java.util.ArrayList<org.sonarqube.ws.Common.Component>(projects_);
+          bitField0_ |= 0x00000008;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.sonarqube.ws.Common.Component, org.sonarqube.ws.Common.Component.Builder, org.sonarqube.ws.Common.ComponentOrBuilder> projectsBuilder_;
+
+      /**
+       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+       */
+      public java.util.List<org.sonarqube.ws.Common.Component> getProjectsList() {
+        if (projectsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(projects_);
+        } else {
+          return projectsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+       */
+      public int getProjectsCount() {
+        if (projectsBuilder_ == null) {
+          return projects_.size();
+        } else {
+          return projectsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+       */
+      public org.sonarqube.ws.Common.Component getProjects(int index) {
+        if (projectsBuilder_ == null) {
+          return projects_.get(index);
+        } else {
+          return projectsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+       */
+      public Builder setProjects(
+          int index, org.sonarqube.ws.Common.Component value) {
+        if (projectsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureProjectsIsMutable();
+          projects_.set(index, value);
+          onChanged();
+        } else {
+          projectsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+       */
+      public Builder setProjects(
+          int index, org.sonarqube.ws.Common.Component.Builder builderForValue) {
+        if (projectsBuilder_ == null) {
+          ensureProjectsIsMutable();
+          projects_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          projectsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+       */
+      public Builder addProjects(org.sonarqube.ws.Common.Component value) {
+        if (projectsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureProjectsIsMutable();
+          projects_.add(value);
+          onChanged();
+        } else {
+          projectsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+       */
+      public Builder addProjects(
+          int index, org.sonarqube.ws.Common.Component value) {
+        if (projectsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureProjectsIsMutable();
+          projects_.add(index, value);
+          onChanged();
+        } else {
+          projectsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+       */
+      public Builder addProjects(
+          org.sonarqube.ws.Common.Component.Builder builderForValue) {
+        if (projectsBuilder_ == null) {
+          ensureProjectsIsMutable();
+          projects_.add(builderForValue.build());
+          onChanged();
+        } else {
+          projectsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+       */
+      public Builder addProjects(
+          int index, org.sonarqube.ws.Common.Component.Builder builderForValue) {
+        if (projectsBuilder_ == null) {
+          ensureProjectsIsMutable();
+          projects_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          projectsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+       */
+      public Builder addAllProjects(
+          java.lang.Iterable<? extends org.sonarqube.ws.Common.Component> values) {
+        if (projectsBuilder_ == null) {
+          ensureProjectsIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, projects_);
+          onChanged();
+        } else {
+          projectsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+       */
+      public Builder clearProjects() {
+        if (projectsBuilder_ == null) {
+          projects_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+          onChanged();
+        } else {
+          projectsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+       */
+      public Builder removeProjects(int index) {
+        if (projectsBuilder_ == null) {
+          ensureProjectsIsMutable();
+          projects_.remove(index);
+          onChanged();
+        } else {
+          projectsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+       */
+      public org.sonarqube.ws.Common.Component.Builder getProjectsBuilder(
+          int index) {
+        return getProjectsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+       */
+      public org.sonarqube.ws.Common.ComponentOrBuilder getProjectsOrBuilder(
+          int index) {
+        if (projectsBuilder_ == null) {
+          return projects_.get(index);  } else {
+          return projectsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+       */
+      public java.util.List<? extends org.sonarqube.ws.Common.ComponentOrBuilder> 
+           getProjectsOrBuilderList() {
+        if (projectsBuilder_ != null) {
+          return projectsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(projects_);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+       */
+      public org.sonarqube.ws.Common.Component.Builder addProjectsBuilder() {
+        return getProjectsFieldBuilder().addBuilder(
+            org.sonarqube.ws.Common.Component.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+       */
+      public org.sonarqube.ws.Common.Component.Builder addProjectsBuilder(
+          int index) {
+        return getProjectsFieldBuilder().addBuilder(
+            index, org.sonarqube.ws.Common.Component.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component projects = 4;</code>
+       */
+      public java.util.List<org.sonarqube.ws.Common.Component.Builder> 
+           getProjectsBuilderList() {
+        return getProjectsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.sonarqube.ws.Common.Component, org.sonarqube.ws.Common.Component.Builder, org.sonarqube.ws.Common.ComponentOrBuilder> 
+          getProjectsFieldBuilder() {
+        if (projectsBuilder_ == null) {
+          projectsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.sonarqube.ws.Common.Component, org.sonarqube.ws.Common.Component.Builder, org.sonarqube.ws.Common.ComponentOrBuilder>(
+                  projects_,
+                  ((bitField0_ & 0x00000008) == 0x00000008),
+                  getParentForChildren(),
+                  isClean());
+          projects_ = null;
+        }
+        return projectsBuilder_;
+      }
+
+      private java.util.List<org.sonarqube.ws.Common.Component> components_ =
+        java.util.Collections.emptyList();
+      private void ensureComponentsIsMutable() {
+        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
+          components_ = new java.util.ArrayList<org.sonarqube.ws.Common.Component>(components_);
+          bitField0_ |= 0x00000010;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.sonarqube.ws.Common.Component, org.sonarqube.ws.Common.Component.Builder, org.sonarqube.ws.Common.ComponentOrBuilder> componentsBuilder_;
+
+      /**
+       * <code>repeated .sonarqube.ws.Component components = 5;</code>
+       */
+      public java.util.List<org.sonarqube.ws.Common.Component> getComponentsList() {
+        if (componentsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(components_);
+        } else {
+          return componentsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component components = 5;</code>
+       */
+      public int getComponentsCount() {
+        if (componentsBuilder_ == null) {
+          return components_.size();
+        } else {
+          return componentsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component components = 5;</code>
+       */
+      public org.sonarqube.ws.Common.Component getComponents(int index) {
+        if (componentsBuilder_ == null) {
+          return components_.get(index);
+        } else {
+          return componentsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component components = 5;</code>
+       */
+      public Builder setComponents(
+          int index, org.sonarqube.ws.Common.Component value) {
+        if (componentsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureComponentsIsMutable();
+          components_.set(index, value);
+          onChanged();
+        } else {
+          componentsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component components = 5;</code>
+       */
+      public Builder setComponents(
+          int index, org.sonarqube.ws.Common.Component.Builder builderForValue) {
+        if (componentsBuilder_ == null) {
+          ensureComponentsIsMutable();
+          components_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          componentsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component components = 5;</code>
+       */
+      public Builder addComponents(org.sonarqube.ws.Common.Component value) {
+        if (componentsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureComponentsIsMutable();
+          components_.add(value);
+          onChanged();
+        } else {
+          componentsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component components = 5;</code>
+       */
+      public Builder addComponents(
+          int index, org.sonarqube.ws.Common.Component value) {
+        if (componentsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureComponentsIsMutable();
+          components_.add(index, value);
+          onChanged();
+        } else {
+          componentsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component components = 5;</code>
+       */
+      public Builder addComponents(
+          org.sonarqube.ws.Common.Component.Builder builderForValue) {
+        if (componentsBuilder_ == null) {
+          ensureComponentsIsMutable();
+          components_.add(builderForValue.build());
+          onChanged();
+        } else {
+          componentsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component components = 5;</code>
+       */
+      public Builder addComponents(
+          int index, org.sonarqube.ws.Common.Component.Builder builderForValue) {
+        if (componentsBuilder_ == null) {
+          ensureComponentsIsMutable();
+          components_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          componentsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component components = 5;</code>
+       */
+      public Builder addAllComponents(
+          java.lang.Iterable<? extends org.sonarqube.ws.Common.Component> values) {
+        if (componentsBuilder_ == null) {
+          ensureComponentsIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, components_);
+          onChanged();
+        } else {
+          componentsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component components = 5;</code>
+       */
+      public Builder clearComponents() {
+        if (componentsBuilder_ == null) {
+          components_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000010);
+          onChanged();
+        } else {
+          componentsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component components = 5;</code>
+       */
+      public Builder removeComponents(int index) {
+        if (componentsBuilder_ == null) {
+          ensureComponentsIsMutable();
+          components_.remove(index);
+          onChanged();
+        } else {
+          componentsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component components = 5;</code>
+       */
+      public org.sonarqube.ws.Common.Component.Builder getComponentsBuilder(
+          int index) {
+        return getComponentsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component components = 5;</code>
+       */
+      public org.sonarqube.ws.Common.ComponentOrBuilder getComponentsOrBuilder(
+          int index) {
+        if (componentsBuilder_ == null) {
+          return components_.get(index);  } else {
+          return componentsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component components = 5;</code>
+       */
+      public java.util.List<? extends org.sonarqube.ws.Common.ComponentOrBuilder> 
+           getComponentsOrBuilderList() {
+        if (componentsBuilder_ != null) {
+          return componentsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(components_);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component components = 5;</code>
+       */
+      public org.sonarqube.ws.Common.Component.Builder addComponentsBuilder() {
+        return getComponentsFieldBuilder().addBuilder(
+            org.sonarqube.ws.Common.Component.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component components = 5;</code>
+       */
+      public org.sonarqube.ws.Common.Component.Builder addComponentsBuilder(
+          int index) {
+        return getComponentsFieldBuilder().addBuilder(
+            index, org.sonarqube.ws.Common.Component.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Component components = 5;</code>
+       */
+      public java.util.List<org.sonarqube.ws.Common.Component.Builder> 
+           getComponentsBuilderList() {
+        return getComponentsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.sonarqube.ws.Common.Component, org.sonarqube.ws.Common.Component.Builder, org.sonarqube.ws.Common.ComponentOrBuilder> 
+          getComponentsFieldBuilder() {
+        if (componentsBuilder_ == null) {
+          componentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.sonarqube.ws.Common.Component, org.sonarqube.ws.Common.Component.Builder, org.sonarqube.ws.Common.ComponentOrBuilder>(
+                  components_,
+                  ((bitField0_ & 0x00000010) == 0x00000010),
+                  getParentForChildren(),
+                  isClean());
+          components_ = null;
+        }
+        return componentsBuilder_;
+      }
+
+      private java.util.List<org.sonarqube.ws.Common.Rule> rules_ =
+        java.util.Collections.emptyList();
+      private void ensureRulesIsMutable() {
+        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
+          rules_ = new java.util.ArrayList<org.sonarqube.ws.Common.Rule>(rules_);
+          bitField0_ |= 0x00000020;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.sonarqube.ws.Common.Rule, org.sonarqube.ws.Common.Rule.Builder, org.sonarqube.ws.Common.RuleOrBuilder> rulesBuilder_;
+
+      /**
+       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+       */
+      public java.util.List<org.sonarqube.ws.Common.Rule> getRulesList() {
+        if (rulesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(rules_);
+        } else {
+          return rulesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+       */
+      public int getRulesCount() {
+        if (rulesBuilder_ == null) {
+          return rules_.size();
+        } else {
+          return rulesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+       */
+      public org.sonarqube.ws.Common.Rule getRules(int index) {
+        if (rulesBuilder_ == null) {
+          return rules_.get(index);
+        } else {
+          return rulesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+       */
+      public Builder setRules(
+          int index, org.sonarqube.ws.Common.Rule value) {
+        if (rulesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureRulesIsMutable();
+          rules_.set(index, value);
+          onChanged();
+        } else {
+          rulesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+       */
+      public Builder setRules(
+          int index, org.sonarqube.ws.Common.Rule.Builder builderForValue) {
+        if (rulesBuilder_ == null) {
+          ensureRulesIsMutable();
+          rules_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          rulesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+       */
+      public Builder addRules(org.sonarqube.ws.Common.Rule value) {
+        if (rulesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureRulesIsMutable();
+          rules_.add(value);
+          onChanged();
+        } else {
+          rulesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+       */
+      public Builder addRules(
+          int index, org.sonarqube.ws.Common.Rule value) {
+        if (rulesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureRulesIsMutable();
+          rules_.add(index, value);
+          onChanged();
+        } else {
+          rulesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+       */
+      public Builder addRules(
+          org.sonarqube.ws.Common.Rule.Builder builderForValue) {
+        if (rulesBuilder_ == null) {
+          ensureRulesIsMutable();
+          rules_.add(builderForValue.build());
+          onChanged();
+        } else {
+          rulesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+       */
+      public Builder addRules(
+          int index, org.sonarqube.ws.Common.Rule.Builder builderForValue) {
+        if (rulesBuilder_ == null) {
+          ensureRulesIsMutable();
+          rules_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          rulesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+       */
+      public Builder addAllRules(
+          java.lang.Iterable<? extends org.sonarqube.ws.Common.Rule> values) {
+        if (rulesBuilder_ == null) {
+          ensureRulesIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, rules_);
+          onChanged();
+        } else {
+          rulesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+       */
+      public Builder clearRules() {
+        if (rulesBuilder_ == null) {
+          rules_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000020);
+          onChanged();
+        } else {
+          rulesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+       */
+      public Builder removeRules(int index) {
+        if (rulesBuilder_ == null) {
+          ensureRulesIsMutable();
+          rules_.remove(index);
+          onChanged();
+        } else {
+          rulesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+       */
+      public org.sonarqube.ws.Common.Rule.Builder getRulesBuilder(
+          int index) {
+        return getRulesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+       */
+      public org.sonarqube.ws.Common.RuleOrBuilder getRulesOrBuilder(
+          int index) {
+        if (rulesBuilder_ == null) {
+          return rules_.get(index);  } else {
+          return rulesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+       */
+      public java.util.List<? extends org.sonarqube.ws.Common.RuleOrBuilder> 
+           getRulesOrBuilderList() {
+        if (rulesBuilder_ != null) {
+          return rulesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(rules_);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+       */
+      public org.sonarqube.ws.Common.Rule.Builder addRulesBuilder() {
+        return getRulesFieldBuilder().addBuilder(
+            org.sonarqube.ws.Common.Rule.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+       */
+      public org.sonarqube.ws.Common.Rule.Builder addRulesBuilder(
+          int index) {
+        return getRulesFieldBuilder().addBuilder(
+            index, org.sonarqube.ws.Common.Rule.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .sonarqube.ws.Rule rules = 6;</code>
+       */
+      public java.util.List<org.sonarqube.ws.Common.Rule.Builder> 
+           getRulesBuilderList() {
+        return getRulesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.sonarqube.ws.Common.Rule, org.sonarqube.ws.Common.Rule.Builder, org.sonarqube.ws.Common.RuleOrBuilder> 
+          getRulesFieldBuilder() {
+        if (rulesBuilder_ == null) {
+          rulesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.sonarqube.ws.Common.Rule, org.sonarqube.ws.Common.Rule.Builder, org.sonarqube.ws.Common.RuleOrBuilder>(
+                  rules_,
+                  ((bitField0_ & 0x00000020) == 0x00000020),
+                  getParentForChildren(),
+                  isClean());
+          rules_ = null;
+        }
+        return rulesBuilder_;
+      }
+
+      private java.util.List<org.sonarqube.ws.Common.User> users_ =
+        java.util.Collections.emptyList();
+      private void ensureUsersIsMutable() {
+        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
+          users_ = new java.util.ArrayList<org.sonarqube.ws.Common.User>(users_);
+          bitField0_ |= 0x00000040;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.sonarqube.ws.Common.User, org.sonarqube.ws.Common.User.Builder, org.sonarqube.ws.Common.UserOrBuilder> usersBuilder_;
+
+      /**
+       * <code>repeated .sonarqube.ws.User users = 7;</code>
+       */
+      public java.util.List<org.sonarqube.ws.Common.User> getUsersList() {
+        if (usersBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(users_);
+        } else {
+          return usersBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.User users = 7;</code>
+       */
+      public int getUsersCount() {
+        if (usersBuilder_ == null) {
+          return users_.size();
+        } else {
+          return usersBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.User users = 7;</code>
+       */
+      public org.sonarqube.ws.Common.User getUsers(int index) {
+        if (usersBuilder_ == null) {
+          return users_.get(index);
+        } else {
+          return usersBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.User users = 7;</code>
+       */
+      public Builder setUsers(
+          int index, org.sonarqube.ws.Common.User value) {
+        if (usersBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureUsersIsMutable();
+          users_.set(index, value);
+          onChanged();
+        } else {
+          usersBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.User users = 7;</code>
+       */
+      public Builder setUsers(
+          int index, org.sonarqube.ws.Common.User.Builder builderForValue) {
+        if (usersBuilder_ == null) {
+          ensureUsersIsMutable();
+          users_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          usersBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.User users = 7;</code>
+       */
+      public Builder addUsers(org.sonarqube.ws.Common.User value) {
+        if (usersBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureUsersIsMutable();
+          users_.add(value);
+          onChanged();
+        } else {
+          usersBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.User users = 7;</code>
+       */
+      public Builder addUsers(
+          int index, org.sonarqube.ws.Common.User value) {
+        if (usersBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureUsersIsMutable();
+          users_.add(index, value);
+          onChanged();
+        } else {
+          usersBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.User users = 7;</code>
+       */
+      public Builder addUsers(
+          org.sonarqube.ws.Common.User.Builder builderForValue) {
+        if (usersBuilder_ == null) {
+          ensureUsersIsMutable();
+          users_.add(builderForValue.build());
+          onChanged();
+        } else {
+          usersBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.User users = 7;</code>
+       */
+      public Builder addUsers(
+          int index, org.sonarqube.ws.Common.User.Builder builderForValue) {
+        if (usersBuilder_ == null) {
+          ensureUsersIsMutable();
+          users_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          usersBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.User users = 7;</code>
+       */
+      public Builder addAllUsers(
+          java.lang.Iterable<? extends org.sonarqube.ws.Common.User> values) {
+        if (usersBuilder_ == null) {
+          ensureUsersIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, users_);
+          onChanged();
+        } else {
+          usersBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.User users = 7;</code>
+       */
+      public Builder clearUsers() {
+        if (usersBuilder_ == null) {
+          users_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000040);
+          onChanged();
+        } else {
+          usersBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.User users = 7;</code>
+       */
+      public Builder removeUsers(int index) {
+        if (usersBuilder_ == null) {
+          ensureUsersIsMutable();
+          users_.remove(index);
+          onChanged();
+        } else {
+          usersBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.User users = 7;</code>
+       */
+      public org.sonarqube.ws.Common.User.Builder getUsersBuilder(
+          int index) {
+        return getUsersFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .sonarqube.ws.User users = 7;</code>
+       */
+      public org.sonarqube.ws.Common.UserOrBuilder getUsersOrBuilder(
+          int index) {
+        if (usersBuilder_ == null) {
+          return users_.get(index);  } else {
+          return usersBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.User users = 7;</code>
+       */
+      public java.util.List<? extends org.sonarqube.ws.Common.UserOrBuilder> 
+           getUsersOrBuilderList() {
+        if (usersBuilder_ != null) {
+          return usersBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(users_);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.User users = 7;</code>
+       */
+      public org.sonarqube.ws.Common.User.Builder addUsersBuilder() {
+        return getUsersFieldBuilder().addBuilder(
+            org.sonarqube.ws.Common.User.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .sonarqube.ws.User users = 7;</code>
+       */
+      public org.sonarqube.ws.Common.User.Builder addUsersBuilder(
+          int index) {
+        return getUsersFieldBuilder().addBuilder(
+            index, org.sonarqube.ws.Common.User.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .sonarqube.ws.User users = 7;</code>
+       */
+      public java.util.List<org.sonarqube.ws.Common.User.Builder> 
+           getUsersBuilderList() {
+        return getUsersFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.sonarqube.ws.Common.User, org.sonarqube.ws.Common.User.Builder, org.sonarqube.ws.Common.UserOrBuilder> 
+          getUsersFieldBuilder() {
+        if (usersBuilder_ == null) {
+          usersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.sonarqube.ws.Common.User, org.sonarqube.ws.Common.User.Builder, org.sonarqube.ws.Common.UserOrBuilder>(
+                  users_,
+                  ((bitField0_ & 0x00000040) == 0x00000040),
+                  getParentForChildren(),
+                  isClean());
+          users_ = null;
+        }
+        return usersBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:sonarqube.ws.issues.Search)
+    }
+
+    static {
+      defaultInstance = new Search(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:sonarqube.ws.issues.Search)
+  }
+
+  public interface IssueOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:sonarqube.ws.issues.Issue)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>optional string key = 1;</code>
+     */
+    boolean hasKey();
+    /**
+     * <code>optional string key = 1;</code>
+     */
+    java.lang.String getKey();
+    /**
+     * <code>optional string key = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getKeyBytes();
+
+    /**
+     * <code>optional string rule = 2;</code>
+     */
+    boolean hasRule();
+    /**
+     * <code>optional string rule = 2;</code>
+     */
+    java.lang.String getRule();
+    /**
+     * <code>optional string rule = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getRuleBytes();
+
+    /**
+     * <code>optional string component = 3;</code>
+     */
+    boolean hasComponent();
+    /**
+     * <code>optional string component = 3;</code>
+     */
+    java.lang.String getComponent();
+    /**
+     * <code>optional string component = 3;</code>
+     */
+    com.google.protobuf.ByteString
+        getComponentBytes();
+
+    /**
+     * <code>optional int32 componentId = 4;</code>
+     */
+    boolean hasComponentId();
+    /**
+     * <code>optional int32 componentId = 4;</code>
+     */
+    int getComponentId();
+
+    /**
+     * <code>optional string project = 5;</code>
+     */
+    boolean hasProject();
+    /**
+     * <code>optional string project = 5;</code>
+     */
+    java.lang.String getProject();
+    /**
+     * <code>optional string project = 5;</code>
+     */
+    com.google.protobuf.ByteString
+        getProjectBytes();
+
+    /**
+     * <code>optional string subProject = 6;</code>
+     */
+    boolean hasSubProject();
+    /**
+     * <code>optional string subProject = 6;</code>
+     */
+    java.lang.String getSubProject();
+    /**
+     * <code>optional string subProject = 6;</code>
+     */
+    com.google.protobuf.ByteString
+        getSubProjectBytes();
+
+    /**
+     * <code>optional int32 line = 7;</code>
+     */
+    boolean hasLine();
+    /**
+     * <code>optional int32 line = 7;</code>
+     */
+    int getLine();
+
+    /**
+     * <code>optional string resolution = 8;</code>
+     */
+    boolean hasResolution();
+    /**
+     * <code>optional string resolution = 8;</code>
+     */
+    java.lang.String getResolution();
+    /**
+     * <code>optional string resolution = 8;</code>
+     */
+    com.google.protobuf.ByteString
+        getResolutionBytes();
+
+    /**
+     * <code>optional string status = 9;</code>
+     */
+    boolean hasStatus();
+    /**
+     * <code>optional string status = 9;</code>
+     */
+    java.lang.String getStatus();
+    /**
+     * <code>optional string status = 9;</code>
+     */
+    com.google.protobuf.ByteString
+        getStatusBytes();
+
+    /**
+     * <code>optional string message = 10;</code>
+     */
+    boolean hasMessage();
+    /**
+     * <code>optional string message = 10;</code>
+     */
+    java.lang.String getMessage();
+    /**
+     * <code>optional string message = 10;</code>
+     */
+    com.google.protobuf.ByteString
+        getMessageBytes();
+
+    /**
+     * <code>optional string debt = 11;</code>
+     */
+    boolean hasDebt();
+    /**
+     * <code>optional string debt = 11;</code>
+     */
+    java.lang.String getDebt();
+    /**
+     * <code>optional string debt = 11;</code>
+     */
+    com.google.protobuf.ByteString
+        getDebtBytes();
+
+    /**
+     * <code>optional string assignee = 12;</code>
+     */
+    boolean hasAssignee();
+    /**
+     * <code>optional string assignee = 12;</code>
+     */
+    java.lang.String getAssignee();
+    /**
+     * <code>optional string assignee = 12;</code>
+     */
+    com.google.protobuf.ByteString
+        getAssigneeBytes();
+
+    /**
+     * <code>optional string reporter = 13;</code>
+     */
+    boolean hasReporter();
+    /**
+     * <code>optional string reporter = 13;</code>
+     */
+    java.lang.String getReporter();
+    /**
+     * <code>optional string reporter = 13;</code>
+     */
+    com.google.protobuf.ByteString
+        getReporterBytes();
+
+    /**
+     * <code>optional string scmAuthor = 14;</code>
+     */
+    boolean hasScmAuthor();
+    /**
+     * <code>optional string scmAuthor = 14;</code>
+     */
+    java.lang.String getScmAuthor();
+    /**
+     * <code>optional string scmAuthor = 14;</code>
+     */
+    com.google.protobuf.ByteString
+        getScmAuthorBytes();
+
+    /**
+     * <code>optional string actionPlan = 15;</code>
+     */
+    boolean hasActionPlan();
+    /**
+     * <code>optional string actionPlan = 15;</code>
+     */
+    java.lang.String getActionPlan();
+    /**
+     * <code>optional string actionPlan = 15;</code>
+     */
+    com.google.protobuf.ByteString
+        getActionPlanBytes();
+
+    /**
+     * <code>optional string actionPlanName = 16;</code>
+     */
+    boolean hasActionPlanName();
+    /**
+     * <code>optional string actionPlanName = 16;</code>
+     */
+    java.lang.String getActionPlanName();
+    /**
+     * <code>optional string actionPlanName = 16;</code>
+     */
+    com.google.protobuf.ByteString
+        getActionPlanNameBytes();
+
+    /**
+     * <code>optional string attr = 17;</code>
+     */
+    boolean hasAttr();
+    /**
+     * <code>optional string attr = 17;</code>
+     */
+    java.lang.String getAttr();
+    /**
+     * <code>optional string attr = 17;</code>
+     */
+    com.google.protobuf.ByteString
+        getAttrBytes();
+
+    /**
+     * <code>repeated string tags = 18;</code>
+     */
+    com.google.protobuf.ProtocolStringList
+        getTagsList();
+    /**
+     * <code>repeated string tags = 18;</code>
+     */
+    int getTagsCount();
+    /**
+     * <code>repeated string tags = 18;</code>
+     */
+    java.lang.String getTags(int index);
+    /**
+     * <code>repeated string tags = 18;</code>
+     */
+    com.google.protobuf.ByteString
+        getTagsBytes(int index);
+
+    /**
+     * <code>repeated string transitions = 19;</code>
+     */
+    com.google.protobuf.ProtocolStringList
+        getTransitionsList();
+    /**
+     * <code>repeated string transitions = 19;</code>
+     */
+    int getTransitionsCount();
+    /**
+     * <code>repeated string transitions = 19;</code>
+     */
+    java.lang.String getTransitions(int index);
+    /**
+     * <code>repeated string transitions = 19;</code>
+     */
+    com.google.protobuf.ByteString
+        getTransitionsBytes(int index);
+
+    /**
+     * <code>repeated string actions = 20;</code>
+     */
+    com.google.protobuf.ProtocolStringList
+        getActionsList();
+    /**
+     * <code>repeated string actions = 20;</code>
+     */
+    int getActionsCount();
+    /**
+     * <code>repeated string actions = 20;</code>
+     */
+    java.lang.String getActions(int index);
+    /**
+     * <code>repeated string actions = 20;</code>
+     */
+    com.google.protobuf.ByteString
+        getActionsBytes(int index);
+
+    /**
+     * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+     */
+    java.util.List<org.sonarqube.ws.Issues.Comment> 
+        getCommentsList();
+    /**
+     * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+     */
+    org.sonarqube.ws.Issues.Comment getComments(int index);
+    /**
+     * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+     */
+    int getCommentsCount();
+    /**
+     * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+     */
+    java.util.List<? extends org.sonarqube.ws.Issues.CommentOrBuilder> 
+        getCommentsOrBuilderList();
+    /**
+     * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+     */
+    org.sonarqube.ws.Issues.CommentOrBuilder getCommentsOrBuilder(
+        int index);
+
+    /**
+     * <code>optional string creationDate = 22;</code>
+     */
+    boolean hasCreationDate();
+    /**
+     * <code>optional string creationDate = 22;</code>
+     */
+    java.lang.String getCreationDate();
+    /**
+     * <code>optional string creationDate = 22;</code>
+     */
+    com.google.protobuf.ByteString
+        getCreationDateBytes();
+
+    /**
+     * <code>optional string updateDate = 23;</code>
+     */
+    boolean hasUpdateDate();
+    /**
+     * <code>optional string updateDate = 23;</code>
+     */
+    java.lang.String getUpdateDate();
+    /**
+     * <code>optional string updateDate = 23;</code>
+     */
+    com.google.protobuf.ByteString
+        getUpdateDateBytes();
+
+    /**
+     * <code>optional string fUpdateAge = 24;</code>
+     */
+    boolean hasFUpdateAge();
+    /**
+     * <code>optional string fUpdateAge = 24;</code>
+     */
+    java.lang.String getFUpdateAge();
+    /**
+     * <code>optional string fUpdateAge = 24;</code>
+     */
+    com.google.protobuf.ByteString
+        getFUpdateAgeBytes();
+
+    /**
+     * <code>optional string closeDate = 25;</code>
+     */
+    boolean hasCloseDate();
+    /**
+     * <code>optional string closeDate = 25;</code>
+     */
+    java.lang.String getCloseDate();
+    /**
+     * <code>optional string closeDate = 25;</code>
+     */
+    com.google.protobuf.ByteString
+        getCloseDateBytes();
+  }
+  /**
+   * Protobuf type {@code sonarqube.ws.issues.Issue}
+   */
+  public static final class Issue extends
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:sonarqube.ws.issues.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;
+              key_ = bs;
+              break;
+            }
+            case 18: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000002;
+              rule_ = bs;
+              break;
+            }
+            case 26: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000004;
+              component_ = bs;
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              componentId_ = input.readInt32();
+              break;
+            }
+            case 42: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000010;
+              project_ = bs;
+              break;
+            }
+            case 50: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000020;
+              subProject_ = bs;
+              break;
+            }
+            case 56: {
+              bitField0_ |= 0x00000040;
+              line_ = input.readInt32();
+              break;
+            }
+            case 66: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000080;
+              resolution_ = bs;
+              break;
+            }
+            case 74: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000100;
+              status_ = bs;
+              break;
+            }
+            case 82: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000200;
+              message_ = bs;
+              break;
+            }
+            case 90: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000400;
+              debt_ = bs;
+              break;
+            }
+            case 98: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000800;
+              assignee_ = bs;
+              break;
+            }
+            case 106: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00001000;
+              reporter_ = bs;
+              break;
+            }
+            case 114: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00002000;
+              scmAuthor_ = bs;
+              break;
+            }
+            case 122: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00004000;
+              actionPlan_ = bs;
+              break;
+            }
+            case 130: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00008000;
+              actionPlanName_ = bs;
+              break;
+            }
+            case 138: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00010000;
+              attr_ = bs;
+              break;
+            }
+            case 146: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              if (!((mutable_bitField0_ & 0x00020000) == 0x00020000)) {
+                tags_ = new com.google.protobuf.LazyStringArrayList();
+                mutable_bitField0_ |= 0x00020000;
+              }
+              tags_.add(bs);
+              break;
+            }
+            case 154: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              if (!((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
+                transitions_ = new com.google.protobuf.LazyStringArrayList();
+                mutable_bitField0_ |= 0x00040000;
+              }
+              transitions_.add(bs);
+              break;
+            }
+            case 162: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              if (!((mutable_bitField0_ & 0x00080000) == 0x00080000)) {
+                actions_ = new com.google.protobuf.LazyStringArrayList();
+                mutable_bitField0_ |= 0x00080000;
+              }
+              actions_.add(bs);
+              break;
+            }
+            case 170: {
+              if (!((mutable_bitField0_ & 0x00100000) == 0x00100000)) {
+                comments_ = new java.util.ArrayList<org.sonarqube.ws.Issues.Comment>();
+                mutable_bitField0_ |= 0x00100000;
+              }
+              comments_.add(input.readMessage(org.sonarqube.ws.Issues.Comment.PARSER, extensionRegistry));
+              break;
+            }
+            case 178: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00020000;
+              creationDate_ = bs;
+              break;
+            }
+            case 186: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00040000;
+              updateDate_ = bs;
+              break;
+            }
+            case 194: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00080000;
+              fUpdateAge_ = bs;
+              break;
+            }
+            case 202: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00100000;
+              closeDate_ = 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_ & 0x00020000) == 0x00020000)) {
+          tags_ = tags_.getUnmodifiableView();
+        }
+        if (((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
+          transitions_ = transitions_.getUnmodifiableView();
+        }
+        if (((mutable_bitField0_ & 0x00080000) == 0x00080000)) {
+          actions_ = actions_.getUnmodifiableView();
+        }
+        if (((mutable_bitField0_ & 0x00100000) == 0x00100000)) {
+          comments_ = java.util.Collections.unmodifiableList(comments_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Issue_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Issue_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.sonarqube.ws.Issues.Issue.class, org.sonarqube.ws.Issues.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 KEY_FIELD_NUMBER = 1;
+    private java.lang.Object key_;
+    /**
+     * <code>optional string key = 1;</code>
+     */
+    public boolean hasKey() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional string key = 1;</code>
+     */
+    public java.lang.String getKey() {
+      java.lang.Object ref = key_;
+      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()) {
+          key_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string key = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getKeyBytes() {
+      java.lang.Object ref = key_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        key_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int RULE_FIELD_NUMBER = 2;
+    private java.lang.Object rule_;
+    /**
+     * <code>optional string rule = 2;</code>
+     */
+    public boolean hasRule() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string rule = 2;</code>
+     */
+    public java.lang.String getRule() {
+      java.lang.Object ref = rule_;
+      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()) {
+          rule_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string rule = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getRuleBytes() {
+      java.lang.Object ref = rule_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        rule_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int COMPONENT_FIELD_NUMBER = 3;
+    private java.lang.Object component_;
+    /**
+     * <code>optional string component = 3;</code>
+     */
+    public boolean hasComponent() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional string component = 3;</code>
+     */
+    public java.lang.String getComponent() {
+      java.lang.Object ref = component_;
+      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()) {
+          component_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string component = 3;</code>
+     */
+    public com.google.protobuf.ByteString
+        getComponentBytes() {
+      java.lang.Object ref = component_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        component_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int COMPONENTID_FIELD_NUMBER = 4;
+    private int componentId_;
+    /**
+     * <code>optional int32 componentId = 4;</code>
+     */
+    public boolean hasComponentId() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional int32 componentId = 4;</code>
+     */
+    public int getComponentId() {
+      return componentId_;
+    }
+
+    public static final int PROJECT_FIELD_NUMBER = 5;
+    private java.lang.Object project_;
+    /**
+     * <code>optional string project = 5;</code>
+     */
+    public boolean hasProject() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional string project = 5;</code>
+     */
+    public java.lang.String getProject() {
+      java.lang.Object ref = project_;
+      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()) {
+          project_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string project = 5;</code>
+     */
+    public com.google.protobuf.ByteString
+        getProjectBytes() {
+      java.lang.Object ref = project_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        project_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int SUBPROJECT_FIELD_NUMBER = 6;
+    private java.lang.Object subProject_;
+    /**
+     * <code>optional string subProject = 6;</code>
+     */
+    public boolean hasSubProject() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional string subProject = 6;</code>
+     */
+    public java.lang.String getSubProject() {
+      java.lang.Object ref = subProject_;
+      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()) {
+          subProject_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string subProject = 6;</code>
+     */
+    public com.google.protobuf.ByteString
+        getSubProjectBytes() {
+      java.lang.Object ref = subProject_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        subProject_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int LINE_FIELD_NUMBER = 7;
+    private int line_;
+    /**
+     * <code>optional int32 line = 7;</code>
+     */
+    public boolean hasLine() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional int32 line = 7;</code>
+     */
+    public int getLine() {
+      return line_;
+    }
+
+    public static final int RESOLUTION_FIELD_NUMBER = 8;
+    private java.lang.Object resolution_;
+    /**
+     * <code>optional string resolution = 8;</code>
+     */
+    public boolean hasResolution() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional string resolution = 8;</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 = 8;</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 = 9;
+    private java.lang.Object status_;
+    /**
+     * <code>optional string status = 9;</code>
+     */
+    public boolean hasStatus() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional string status = 9;</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 = 9;</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 MESSAGE_FIELD_NUMBER = 10;
+    private java.lang.Object message_;
+    /**
+     * <code>optional string message = 10;</code>
+     */
+    public boolean hasMessage() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional string message = 10;</code>
+     */
+    public java.lang.String getMessage() {
+      java.lang.Object ref = message_;
+      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()) {
+          message_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string message = 10;</code>
+     */
+    public com.google.protobuf.ByteString
+        getMessageBytes() {
+      java.lang.Object ref = message_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        message_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int DEBT_FIELD_NUMBER = 11;
+    private java.lang.Object debt_;
+    /**
+     * <code>optional string debt = 11;</code>
+     */
+    public boolean hasDebt() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional string debt = 11;</code>
+     */
+    public java.lang.String getDebt() {
+      java.lang.Object ref = debt_;
+      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()) {
+          debt_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string debt = 11;</code>
+     */
+    public com.google.protobuf.ByteString
+        getDebtBytes() {
+      java.lang.Object ref = debt_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        debt_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int ASSIGNEE_FIELD_NUMBER = 12;
+    private java.lang.Object assignee_;
+    /**
+     * <code>optional string assignee = 12;</code>
+     */
+    public boolean hasAssignee() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional string assignee = 12;</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 = 12;</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 REPORTER_FIELD_NUMBER = 13;
+    private java.lang.Object reporter_;
+    /**
+     * <code>optional string reporter = 13;</code>
+     */
+    public boolean hasReporter() {
+      return ((bitField0_ & 0x00001000) == 0x00001000);
+    }
+    /**
+     * <code>optional string reporter = 13;</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 = 13;</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 SCMAUTHOR_FIELD_NUMBER = 14;
+    private java.lang.Object scmAuthor_;
+    /**
+     * <code>optional string scmAuthor = 14;</code>
+     */
+    public boolean hasScmAuthor() {
+      return ((bitField0_ & 0x00002000) == 0x00002000);
+    }
+    /**
+     * <code>optional string scmAuthor = 14;</code>
+     */
+    public java.lang.String getScmAuthor() {
+      java.lang.Object ref = scmAuthor_;
+      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()) {
+          scmAuthor_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string scmAuthor = 14;</code>
+     */
+    public com.google.protobuf.ByteString
+        getScmAuthorBytes() {
+      java.lang.Object ref = scmAuthor_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        scmAuthor_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int ACTIONPLAN_FIELD_NUMBER = 15;
+    private java.lang.Object actionPlan_;
+    /**
+     * <code>optional string actionPlan = 15;</code>
+     */
+    public boolean hasActionPlan() {
+      return ((bitField0_ & 0x00004000) == 0x00004000);
+    }
+    /**
+     * <code>optional string actionPlan = 15;</code>
+     */
+    public java.lang.String getActionPlan() {
+      java.lang.Object ref = actionPlan_;
+      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()) {
+          actionPlan_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string actionPlan = 15;</code>
+     */
+    public com.google.protobuf.ByteString
+        getActionPlanBytes() {
+      java.lang.Object ref = actionPlan_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        actionPlan_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int ACTIONPLANNAME_FIELD_NUMBER = 16;
+    private java.lang.Object actionPlanName_;
+    /**
+     * <code>optional string actionPlanName = 16;</code>
+     */
+    public boolean hasActionPlanName() {
+      return ((bitField0_ & 0x00008000) == 0x00008000);
+    }
+    /**
+     * <code>optional string actionPlanName = 16;</code>
+     */
+    public java.lang.String getActionPlanName() {
+      java.lang.Object ref = actionPlanName_;
+      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()) {
+          actionPlanName_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string actionPlanName = 16;</code>
+     */
+    public com.google.protobuf.ByteString
+        getActionPlanNameBytes() {
+      java.lang.Object ref = actionPlanName_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        actionPlanName_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int ATTR_FIELD_NUMBER = 17;
+    private java.lang.Object attr_;
+    /**
+     * <code>optional string attr = 17;</code>
+     */
+    public boolean hasAttr() {
+      return ((bitField0_ & 0x00010000) == 0x00010000);
+    }
+    /**
+     * <code>optional string attr = 17;</code>
+     */
+    public java.lang.String getAttr() {
+      java.lang.Object ref = attr_;
+      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()) {
+          attr_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string attr = 17;</code>
+     */
+    public com.google.protobuf.ByteString
+        getAttrBytes() {
+      java.lang.Object ref = attr_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        attr_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int TAGS_FIELD_NUMBER = 18;
+    private com.google.protobuf.LazyStringList tags_;
+    /**
+     * <code>repeated string tags = 18;</code>
+     */
+    public com.google.protobuf.ProtocolStringList
+        getTagsList() {
+      return tags_;
+    }
+    /**
+     * <code>repeated string tags = 18;</code>
+     */
+    public int getTagsCount() {
+      return tags_.size();
+    }
+    /**
+     * <code>repeated string tags = 18;</code>
+     */
+    public java.lang.String getTags(int index) {
+      return tags_.get(index);
+    }
+    /**
+     * <code>repeated string tags = 18;</code>
+     */
+    public com.google.protobuf.ByteString
+        getTagsBytes(int index) {
+      return tags_.getByteString(index);
+    }
+
+    public static final int TRANSITIONS_FIELD_NUMBER = 19;
+    private com.google.protobuf.LazyStringList transitions_;
+    /**
+     * <code>repeated string transitions = 19;</code>
+     */
+    public com.google.protobuf.ProtocolStringList
+        getTransitionsList() {
+      return transitions_;
+    }
+    /**
+     * <code>repeated string transitions = 19;</code>
+     */
+    public int getTransitionsCount() {
+      return transitions_.size();
+    }
+    /**
+     * <code>repeated string transitions = 19;</code>
+     */
+    public java.lang.String getTransitions(int index) {
+      return transitions_.get(index);
+    }
+    /**
+     * <code>repeated string transitions = 19;</code>
+     */
+    public com.google.protobuf.ByteString
+        getTransitionsBytes(int index) {
+      return transitions_.getByteString(index);
+    }
+
+    public static final int ACTIONS_FIELD_NUMBER = 20;
+    private com.google.protobuf.LazyStringList actions_;
+    /**
+     * <code>repeated string actions = 20;</code>
+     */
+    public com.google.protobuf.ProtocolStringList
+        getActionsList() {
+      return actions_;
+    }
+    /**
+     * <code>repeated string actions = 20;</code>
+     */
+    public int getActionsCount() {
+      return actions_.size();
+    }
+    /**
+     * <code>repeated string actions = 20;</code>
+     */
+    public java.lang.String getActions(int index) {
+      return actions_.get(index);
+    }
+    /**
+     * <code>repeated string actions = 20;</code>
+     */
+    public com.google.protobuf.ByteString
+        getActionsBytes(int index) {
+      return actions_.getByteString(index);
+    }
+
+    public static final int COMMENTS_FIELD_NUMBER = 21;
+    private java.util.List<org.sonarqube.ws.Issues.Comment> comments_;
+    /**
+     * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+     */
+    public java.util.List<org.sonarqube.ws.Issues.Comment> getCommentsList() {
+      return comments_;
+    }
+    /**
+     * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+     */
+    public java.util.List<? extends org.sonarqube.ws.Issues.CommentOrBuilder> 
+        getCommentsOrBuilderList() {
+      return comments_;
+    }
+    /**
+     * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+     */
+    public int getCommentsCount() {
+      return comments_.size();
+    }
+    /**
+     * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+     */
+    public org.sonarqube.ws.Issues.Comment getComments(int index) {
+      return comments_.get(index);
+    }
+    /**
+     * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+     */
+    public org.sonarqube.ws.Issues.CommentOrBuilder getCommentsOrBuilder(
+        int index) {
+      return comments_.get(index);
+    }
+
+    public static final int CREATIONDATE_FIELD_NUMBER = 22;
+    private java.lang.Object creationDate_;
+    /**
+     * <code>optional string creationDate = 22;</code>
+     */
+    public boolean hasCreationDate() {
+      return ((bitField0_ & 0x00020000) == 0x00020000);
+    }
+    /**
+     * <code>optional string creationDate = 22;</code>
+     */
+    public java.lang.String getCreationDate() {
+      java.lang.Object ref = creationDate_;
+      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()) {
+          creationDate_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string creationDate = 22;</code>
+     */
+    public com.google.protobuf.ByteString
+        getCreationDateBytes() {
+      java.lang.Object ref = creationDate_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        creationDate_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int UPDATEDATE_FIELD_NUMBER = 23;
+    private java.lang.Object updateDate_;
+    /**
+     * <code>optional string updateDate = 23;</code>
+     */
+    public boolean hasUpdateDate() {
+      return ((bitField0_ & 0x00040000) == 0x00040000);
+    }
+    /**
+     * <code>optional string updateDate = 23;</code>
+     */
+    public java.lang.String getUpdateDate() {
+      java.lang.Object ref = updateDate_;
+      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()) {
+          updateDate_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string updateDate = 23;</code>
+     */
+    public com.google.protobuf.ByteString
+        getUpdateDateBytes() {
+      java.lang.Object ref = updateDate_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        updateDate_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int FUPDATEAGE_FIELD_NUMBER = 24;
+    private java.lang.Object fUpdateAge_;
+    /**
+     * <code>optional string fUpdateAge = 24;</code>
+     */
+    public boolean hasFUpdateAge() {
+      return ((bitField0_ & 0x00080000) == 0x00080000);
+    }
+    /**
+     * <code>optional string fUpdateAge = 24;</code>
+     */
+    public java.lang.String getFUpdateAge() {
+      java.lang.Object ref = fUpdateAge_;
+      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()) {
+          fUpdateAge_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string fUpdateAge = 24;</code>
+     */
+    public com.google.protobuf.ByteString
+        getFUpdateAgeBytes() {
+      java.lang.Object ref = fUpdateAge_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        fUpdateAge_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int CLOSEDATE_FIELD_NUMBER = 25;
+    private java.lang.Object closeDate_;
+    /**
+     * <code>optional string closeDate = 25;</code>
+     */
+    public boolean hasCloseDate() {
+      return ((bitField0_ & 0x00100000) == 0x00100000);
+    }
+    /**
+     * <code>optional string closeDate = 25;</code>
+     */
+    public java.lang.String getCloseDate() {
+      java.lang.Object ref = closeDate_;
+      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()) {
+          closeDate_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string closeDate = 25;</code>
+     */
+    public com.google.protobuf.ByteString
+        getCloseDateBytes() {
+      java.lang.Object ref = closeDate_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        closeDate_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      key_ = "";
+      rule_ = "";
+      component_ = "";
+      componentId_ = 0;
+      project_ = "";
+      subProject_ = "";
+      line_ = 0;
+      resolution_ = "";
+      status_ = "";
+      message_ = "";
+      debt_ = "";
+      assignee_ = "";
+      reporter_ = "";
+      scmAuthor_ = "";
+      actionPlan_ = "";
+      actionPlanName_ = "";
+      attr_ = "";
+      tags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      transitions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      actions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      comments_ = java.util.Collections.emptyList();
+      creationDate_ = "";
+      updateDate_ = "";
+      fUpdateAge_ = "";
+      closeDate_ = "";
+    }
+    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, getKeyBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getRuleBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(3, getComponentBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeInt32(4, componentId_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeBytes(5, getProjectBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBytes(6, getSubProjectBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeInt32(7, line_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeBytes(8, getResolutionBytes());
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeBytes(9, getStatusBytes());
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeBytes(10, getMessageBytes());
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeBytes(11, getDebtBytes());
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeBytes(12, getAssigneeBytes());
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        output.writeBytes(13, getReporterBytes());
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        output.writeBytes(14, getScmAuthorBytes());
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        output.writeBytes(15, getActionPlanBytes());
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        output.writeBytes(16, getActionPlanNameBytes());
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        output.writeBytes(17, getAttrBytes());
+      }
+      for (int i = 0; i < tags_.size(); i++) {
+        output.writeBytes(18, tags_.getByteString(i));
+      }
+      for (int i = 0; i < transitions_.size(); i++) {
+        output.writeBytes(19, transitions_.getByteString(i));
+      }
+      for (int i = 0; i < actions_.size(); i++) {
+        output.writeBytes(20, actions_.getByteString(i));
+      }
+      for (int i = 0; i < comments_.size(); i++) {
+        output.writeMessage(21, comments_.get(i));
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        output.writeBytes(22, getCreationDateBytes());
+      }
+      if (((bitField0_ & 0x00040000) == 0x00040000)) {
+        output.writeBytes(23, getUpdateDateBytes());
+      }
+      if (((bitField0_ & 0x00080000) == 0x00080000)) {
+        output.writeBytes(24, getFUpdateAgeBytes());
+      }
+      if (((bitField0_ & 0x00100000) == 0x00100000)) {
+        output.writeBytes(25, getCloseDateBytes());
+      }
+      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, getKeyBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getRuleBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, getComponentBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(4, componentId_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(5, getProjectBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, getSubProjectBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(7, line_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(8, getResolutionBytes());
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(9, getStatusBytes());
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(10, getMessageBytes());
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(11, getDebtBytes());
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(12, getAssigneeBytes());
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(13, getReporterBytes());
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(14, getScmAuthorBytes());
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(15, getActionPlanBytes());
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(16, getActionPlanNameBytes());
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(17, getAttrBytes());
+      }
+      {
+        int dataSize = 0;
+        for (int i = 0; i < tags_.size(); i++) {
+          dataSize += com.google.protobuf.CodedOutputStream
+            .computeBytesSizeNoTag(tags_.getByteString(i));
+        }
+        size += dataSize;
+        size += 2 * getTagsList().size();
+      }
+      {
+        int dataSize = 0;
+        for (int i = 0; i < transitions_.size(); i++) {
+          dataSize += com.google.protobuf.CodedOutputStream
+            .computeBytesSizeNoTag(transitions_.getByteString(i));
+        }
+        size += dataSize;
+        size += 2 * getTransitionsList().size();
+      }
+      {
+        int dataSize = 0;
+        for (int i = 0; i < actions_.size(); i++) {
+          dataSize += com.google.protobuf.CodedOutputStream
+            .computeBytesSizeNoTag(actions_.getByteString(i));
+        }
+        size += dataSize;
+        size += 2 * getActionsList().size();
+      }
+      for (int i = 0; i < comments_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(21, comments_.get(i));
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(22, getCreationDateBytes());
+      }
+      if (((bitField0_ & 0x00040000) == 0x00040000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(23, getUpdateDateBytes());
+      }
+      if (((bitField0_ & 0x00080000) == 0x00080000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(24, getFUpdateAgeBytes());
+      }
+      if (((bitField0_ & 0x00100000) == 0x00100000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(25, getCloseDateBytes());
+      }
+      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.sonarqube.ws.Issues.Issue parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonarqube.ws.Issues.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.sonarqube.ws.Issues.Issue parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonarqube.ws.Issues.Issue parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Issues.Issue parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonarqube.ws.Issues.Issue parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Issues.Issue parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.sonarqube.ws.Issues.Issue parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Issues.Issue parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonarqube.ws.Issues.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.sonarqube.ws.Issues.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 sonarqube.ws.issues.Issue}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:sonarqube.ws.issues.Issue)
+        org.sonarqube.ws.Issues.IssueOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Issue_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Issue_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.sonarqube.ws.Issues.Issue.class, org.sonarqube.ws.Issues.Issue.Builder.class);
+      }
+
+      // Construct using org.sonarqube.ws.Issues.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) {
+          getCommentsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        key_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        rule_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        component_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        componentId_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        project_ = "";
+        bitField0_ = (bitField0_ & ~0x00000010);
+        subProject_ = "";
+        bitField0_ = (bitField0_ & ~0x00000020);
+        line_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        resolution_ = "";
+        bitField0_ = (bitField0_ & ~0x00000080);
+        status_ = "";
+        bitField0_ = (bitField0_ & ~0x00000100);
+        message_ = "";
+        bitField0_ = (bitField0_ & ~0x00000200);
+        debt_ = "";
+        bitField0_ = (bitField0_ & ~0x00000400);
+        assignee_ = "";
+        bitField0_ = (bitField0_ & ~0x00000800);
+        reporter_ = "";
+        bitField0_ = (bitField0_ & ~0x00001000);
+        scmAuthor_ = "";
+        bitField0_ = (bitField0_ & ~0x00002000);
+        actionPlan_ = "";
+        bitField0_ = (bitField0_ & ~0x00004000);
+        actionPlanName_ = "";
+        bitField0_ = (bitField0_ & ~0x00008000);
+        attr_ = "";
+        bitField0_ = (bitField0_ & ~0x00010000);
+        tags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00020000);
+        transitions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00040000);
+        actions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00080000);
+        if (commentsBuilder_ == null) {
+          comments_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00100000);
+        } else {
+          commentsBuilder_.clear();
+        }
+        creationDate_ = "";
+        bitField0_ = (bitField0_ & ~0x00200000);
+        updateDate_ = "";
+        bitField0_ = (bitField0_ & ~0x00400000);
+        fUpdateAge_ = "";
+        bitField0_ = (bitField0_ & ~0x00800000);
+        closeDate_ = "";
+        bitField0_ = (bitField0_ & ~0x01000000);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Issue_descriptor;
+      }
+
+      public org.sonarqube.ws.Issues.Issue getDefaultInstanceForType() {
+        return org.sonarqube.ws.Issues.Issue.getDefaultInstance();
+      }
+
+      public org.sonarqube.ws.Issues.Issue build() {
+        org.sonarqube.ws.Issues.Issue result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.sonarqube.ws.Issues.Issue buildPartial() {
+        org.sonarqube.ws.Issues.Issue result = new org.sonarqube.ws.Issues.Issue(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.key_ = key_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.rule_ = rule_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.component_ = component_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.componentId_ = componentId_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.project_ = project_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.subProject_ = subProject_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.line_ = line_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.resolution_ = resolution_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        result.status_ = status_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        result.message_ = message_;
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        result.debt_ = debt_;
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        result.assignee_ = assignee_;
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00001000;
+        }
+        result.reporter_ = reporter_;
+        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
+          to_bitField0_ |= 0x00002000;
+        }
+        result.scmAuthor_ = scmAuthor_;
+        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
+          to_bitField0_ |= 0x00004000;
+        }
+        result.actionPlan_ = actionPlan_;
+        if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
+          to_bitField0_ |= 0x00008000;
+        }
+        result.actionPlanName_ = actionPlanName_;
+        if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
+          to_bitField0_ |= 0x00010000;
+        }
+        result.attr_ = attr_;
+        if (((bitField0_ & 0x00020000) == 0x00020000)) {
+          tags_ = tags_.getUnmodifiableView();
+          bitField0_ = (bitField0_ & ~0x00020000);
+        }
+        result.tags_ = tags_;
+        if (((bitField0_ & 0x00040000) == 0x00040000)) {
+          transitions_ = transitions_.getUnmodifiableView();
+          bitField0_ = (bitField0_ & ~0x00040000);
+        }
+        result.transitions_ = transitions_;
+        if (((bitField0_ & 0x00080000) == 0x00080000)) {
+          actions_ = actions_.getUnmodifiableView();
+          bitField0_ = (bitField0_ & ~0x00080000);
+        }
+        result.actions_ = actions_;
+        if (commentsBuilder_ == null) {
+          if (((bitField0_ & 0x00100000) == 0x00100000)) {
+            comments_ = java.util.Collections.unmodifiableList(comments_);
+            bitField0_ = (bitField0_ & ~0x00100000);
+          }
+          result.comments_ = comments_;
+        } else {
+          result.comments_ = commentsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00200000) == 0x00200000)) {
+          to_bitField0_ |= 0x00020000;
+        }
+        result.creationDate_ = creationDate_;
+        if (((from_bitField0_ & 0x00400000) == 0x00400000)) {
+          to_bitField0_ |= 0x00040000;
+        }
+        result.updateDate_ = updateDate_;
+        if (((from_bitField0_ & 0x00800000) == 0x00800000)) {
+          to_bitField0_ |= 0x00080000;
+        }
+        result.fUpdateAge_ = fUpdateAge_;
+        if (((from_bitField0_ & 0x01000000) == 0x01000000)) {
+          to_bitField0_ |= 0x00100000;
+        }
+        result.closeDate_ = closeDate_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.sonarqube.ws.Issues.Issue) {
+          return mergeFrom((org.sonarqube.ws.Issues.Issue)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.sonarqube.ws.Issues.Issue other) {
+        if (other == org.sonarqube.ws.Issues.Issue.getDefaultInstance()) return this;
+        if (other.hasKey()) {
+          bitField0_ |= 0x00000001;
+          key_ = other.key_;
+          onChanged();
+        }
+        if (other.hasRule()) {
+          bitField0_ |= 0x00000002;
+          rule_ = other.rule_;
+          onChanged();
+        }
+        if (other.hasComponent()) {
+          bitField0_ |= 0x00000004;
+          component_ = other.component_;
+          onChanged();
+        }
+        if (other.hasComponentId()) {
+          setComponentId(other.getComponentId());
+        }
+        if (other.hasProject()) {
+          bitField0_ |= 0x00000010;
+          project_ = other.project_;
+          onChanged();
+        }
+        if (other.hasSubProject()) {
+          bitField0_ |= 0x00000020;
+          subProject_ = other.subProject_;
+          onChanged();
+        }
+        if (other.hasLine()) {
+          setLine(other.getLine());
+        }
+        if (other.hasResolution()) {
+          bitField0_ |= 0x00000080;
+          resolution_ = other.resolution_;
+          onChanged();
+        }
+        if (other.hasStatus()) {
+          bitField0_ |= 0x00000100;
+          status_ = other.status_;
+          onChanged();
+        }
+        if (other.hasMessage()) {
+          bitField0_ |= 0x00000200;
+          message_ = other.message_;
+          onChanged();
+        }
+        if (other.hasDebt()) {
+          bitField0_ |= 0x00000400;
+          debt_ = other.debt_;
+          onChanged();
+        }
+        if (other.hasAssignee()) {
+          bitField0_ |= 0x00000800;
+          assignee_ = other.assignee_;
+          onChanged();
+        }
+        if (other.hasReporter()) {
+          bitField0_ |= 0x00001000;
+          reporter_ = other.reporter_;
+          onChanged();
+        }
+        if (other.hasScmAuthor()) {
+          bitField0_ |= 0x00002000;
+          scmAuthor_ = other.scmAuthor_;
+          onChanged();
+        }
+        if (other.hasActionPlan()) {
+          bitField0_ |= 0x00004000;
+          actionPlan_ = other.actionPlan_;
+          onChanged();
+        }
+        if (other.hasActionPlanName()) {
+          bitField0_ |= 0x00008000;
+          actionPlanName_ = other.actionPlanName_;
+          onChanged();
+        }
+        if (other.hasAttr()) {
+          bitField0_ |= 0x00010000;
+          attr_ = other.attr_;
+          onChanged();
+        }
+        if (!other.tags_.isEmpty()) {
+          if (tags_.isEmpty()) {
+            tags_ = other.tags_;
+            bitField0_ = (bitField0_ & ~0x00020000);
+          } else {
+            ensureTagsIsMutable();
+            tags_.addAll(other.tags_);
+          }
+          onChanged();
+        }
+        if (!other.transitions_.isEmpty()) {
+          if (transitions_.isEmpty()) {
+            transitions_ = other.transitions_;
+            bitField0_ = (bitField0_ & ~0x00040000);
+          } else {
+            ensureTransitionsIsMutable();
+            transitions_.addAll(other.transitions_);
+          }
+          onChanged();
+        }
+        if (!other.actions_.isEmpty()) {
+          if (actions_.isEmpty()) {
+            actions_ = other.actions_;
+            bitField0_ = (bitField0_ & ~0x00080000);
+          } else {
+            ensureActionsIsMutable();
+            actions_.addAll(other.actions_);
+          }
+          onChanged();
+        }
+        if (commentsBuilder_ == null) {
+          if (!other.comments_.isEmpty()) {
+            if (comments_.isEmpty()) {
+              comments_ = other.comments_;
+              bitField0_ = (bitField0_ & ~0x00100000);
+            } else {
+              ensureCommentsIsMutable();
+              comments_.addAll(other.comments_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.comments_.isEmpty()) {
+            if (commentsBuilder_.isEmpty()) {
+              commentsBuilder_.dispose();
+              commentsBuilder_ = null;
+              comments_ = other.comments_;
+              bitField0_ = (bitField0_ & ~0x00100000);
+              commentsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getCommentsFieldBuilder() : null;
+            } else {
+              commentsBuilder_.addAllMessages(other.comments_);
+            }
+          }
+        }
+        if (other.hasCreationDate()) {
+          bitField0_ |= 0x00200000;
+          creationDate_ = other.creationDate_;
+          onChanged();
+        }
+        if (other.hasUpdateDate()) {
+          bitField0_ |= 0x00400000;
+          updateDate_ = other.updateDate_;
+          onChanged();
+        }
+        if (other.hasFUpdateAge()) {
+          bitField0_ |= 0x00800000;
+          fUpdateAge_ = other.fUpdateAge_;
+          onChanged();
+        }
+        if (other.hasCloseDate()) {
+          bitField0_ |= 0x01000000;
+          closeDate_ = other.closeDate_;
+          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.sonarqube.ws.Issues.Issue parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.sonarqube.ws.Issues.Issue) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private java.lang.Object key_ = "";
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      public boolean hasKey() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      public java.lang.String getKey() {
+        java.lang.Object ref = key_;
+        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()) {
+            key_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getKeyBytes() {
+        java.lang.Object ref = key_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          key_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      public Builder setKey(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        key_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      public Builder clearKey() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        key_ = getDefaultInstance().getKey();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      public Builder setKeyBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        key_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object rule_ = "";
+      /**
+       * <code>optional string rule = 2;</code>
+       */
+      public boolean hasRule() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string rule = 2;</code>
+       */
+      public java.lang.String getRule() {
+        java.lang.Object ref = rule_;
+        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()) {
+            rule_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string rule = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getRuleBytes() {
+        java.lang.Object ref = rule_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          rule_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string rule = 2;</code>
+       */
+      public Builder setRule(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        rule_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string rule = 2;</code>
+       */
+      public Builder clearRule() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        rule_ = getDefaultInstance().getRule();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string rule = 2;</code>
+       */
+      public Builder setRuleBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        rule_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object component_ = "";
+      /**
+       * <code>optional string component = 3;</code>
+       */
+      public boolean hasComponent() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string component = 3;</code>
+       */
+      public java.lang.String getComponent() {
+        java.lang.Object ref = component_;
+        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()) {
+            component_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string component = 3;</code>
+       */
+      public com.google.protobuf.ByteString
+          getComponentBytes() {
+        java.lang.Object ref = component_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          component_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string component = 3;</code>
+       */
+      public Builder setComponent(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        component_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string component = 3;</code>
+       */
+      public Builder clearComponent() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        component_ = getDefaultInstance().getComponent();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string component = 3;</code>
+       */
+      public Builder setComponentBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        component_ = value;
+        onChanged();
+        return this;
+      }
+
+      private int componentId_ ;
+      /**
+       * <code>optional int32 componentId = 4;</code>
+       */
+      public boolean hasComponentId() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional int32 componentId = 4;</code>
+       */
+      public int getComponentId() {
+        return componentId_;
+      }
+      /**
+       * <code>optional int32 componentId = 4;</code>
+       */
+      public Builder setComponentId(int value) {
+        bitField0_ |= 0x00000008;
+        componentId_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int32 componentId = 4;</code>
+       */
+      public Builder clearComponentId() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        componentId_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object project_ = "";
+      /**
+       * <code>optional string project = 5;</code>
+       */
+      public boolean hasProject() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional string project = 5;</code>
+       */
+      public java.lang.String getProject() {
+        java.lang.Object ref = project_;
+        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()) {
+            project_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string project = 5;</code>
+       */
+      public com.google.protobuf.ByteString
+          getProjectBytes() {
+        java.lang.Object ref = project_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          project_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string project = 5;</code>
+       */
+      public Builder setProject(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        project_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string project = 5;</code>
+       */
+      public Builder clearProject() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        project_ = getDefaultInstance().getProject();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string project = 5;</code>
+       */
+      public Builder setProjectBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        project_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object subProject_ = "";
+      /**
+       * <code>optional string subProject = 6;</code>
+       */
+      public boolean hasSubProject() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional string subProject = 6;</code>
+       */
+      public java.lang.String getSubProject() {
+        java.lang.Object ref = subProject_;
+        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()) {
+            subProject_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string subProject = 6;</code>
+       */
+      public com.google.protobuf.ByteString
+          getSubProjectBytes() {
+        java.lang.Object ref = subProject_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          subProject_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string subProject = 6;</code>
+       */
+      public Builder setSubProject(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        subProject_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string subProject = 6;</code>
+       */
+      public Builder clearSubProject() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        subProject_ = getDefaultInstance().getSubProject();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string subProject = 6;</code>
+       */
+      public Builder setSubProjectBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        subProject_ = value;
+        onChanged();
+        return this;
+      }
+
+      private int line_ ;
+      /**
+       * <code>optional int32 line = 7;</code>
+       */
+      public boolean hasLine() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional int32 line = 7;</code>
+       */
+      public int getLine() {
+        return line_;
+      }
+      /**
+       * <code>optional int32 line = 7;</code>
+       */
+      public Builder setLine(int value) {
+        bitField0_ |= 0x00000040;
+        line_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int32 line = 7;</code>
+       */
+      public Builder clearLine() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        line_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object resolution_ = "";
+      /**
+       * <code>optional string resolution = 8;</code>
+       */
+      public boolean hasResolution() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional string resolution = 8;</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 = 8;</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 = 8;</code>
+       */
+      public Builder setResolution(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000080;
+        resolution_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string resolution = 8;</code>
+       */
+      public Builder clearResolution() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        resolution_ = getDefaultInstance().getResolution();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string resolution = 8;</code>
+       */
+      public Builder setResolutionBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000080;
+        resolution_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object status_ = "";
+      /**
+       * <code>optional string status = 9;</code>
+       */
+      public boolean hasStatus() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional string status = 9;</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 = 9;</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 = 9;</code>
+       */
+      public Builder setStatus(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000100;
+        status_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string status = 9;</code>
+       */
+      public Builder clearStatus() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        status_ = getDefaultInstance().getStatus();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string status = 9;</code>
+       */
+      public Builder setStatusBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000100;
+        status_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object message_ = "";
+      /**
+       * <code>optional string message = 10;</code>
+       */
+      public boolean hasMessage() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional string message = 10;</code>
+       */
+      public java.lang.String getMessage() {
+        java.lang.Object ref = message_;
+        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()) {
+            message_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string message = 10;</code>
+       */
+      public com.google.protobuf.ByteString
+          getMessageBytes() {
+        java.lang.Object ref = message_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          message_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string message = 10;</code>
+       */
+      public Builder setMessage(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000200;
+        message_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string message = 10;</code>
+       */
+      public Builder clearMessage() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        message_ = getDefaultInstance().getMessage();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string message = 10;</code>
+       */
+      public Builder setMessageBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000200;
+        message_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object debt_ = "";
+      /**
+       * <code>optional string debt = 11;</code>
+       */
+      public boolean hasDebt() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional string debt = 11;</code>
+       */
+      public java.lang.String getDebt() {
+        java.lang.Object ref = debt_;
+        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()) {
+            debt_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string debt = 11;</code>
+       */
+      public com.google.protobuf.ByteString
+          getDebtBytes() {
+        java.lang.Object ref = debt_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          debt_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string debt = 11;</code>
+       */
+      public Builder setDebt(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000400;
+        debt_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string debt = 11;</code>
+       */
+      public Builder clearDebt() {
+        bitField0_ = (bitField0_ & ~0x00000400);
+        debt_ = getDefaultInstance().getDebt();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string debt = 11;</code>
+       */
+      public Builder setDebtBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000400;
+        debt_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object assignee_ = "";
+      /**
+       * <code>optional string assignee = 12;</code>
+       */
+      public boolean hasAssignee() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional string assignee = 12;</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 = 12;</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 = 12;</code>
+       */
+      public Builder setAssignee(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000800;
+        assignee_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string assignee = 12;</code>
+       */
+      public Builder clearAssignee() {
+        bitField0_ = (bitField0_ & ~0x00000800);
+        assignee_ = getDefaultInstance().getAssignee();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string assignee = 12;</code>
+       */
+      public Builder setAssigneeBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000800;
+        assignee_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object reporter_ = "";
+      /**
+       * <code>optional string reporter = 13;</code>
+       */
+      public boolean hasReporter() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional string reporter = 13;</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 = 13;</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 = 13;</code>
+       */
+      public Builder setReporter(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00001000;
+        reporter_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string reporter = 13;</code>
+       */
+      public Builder clearReporter() {
+        bitField0_ = (bitField0_ & ~0x00001000);
+        reporter_ = getDefaultInstance().getReporter();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string reporter = 13;</code>
+       */
+      public Builder setReporterBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00001000;
+        reporter_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object scmAuthor_ = "";
+      /**
+       * <code>optional string scmAuthor = 14;</code>
+       */
+      public boolean hasScmAuthor() {
+        return ((bitField0_ & 0x00002000) == 0x00002000);
+      }
+      /**
+       * <code>optional string scmAuthor = 14;</code>
+       */
+      public java.lang.String getScmAuthor() {
+        java.lang.Object ref = scmAuthor_;
+        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()) {
+            scmAuthor_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string scmAuthor = 14;</code>
+       */
+      public com.google.protobuf.ByteString
+          getScmAuthorBytes() {
+        java.lang.Object ref = scmAuthor_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          scmAuthor_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string scmAuthor = 14;</code>
+       */
+      public Builder setScmAuthor(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00002000;
+        scmAuthor_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string scmAuthor = 14;</code>
+       */
+      public Builder clearScmAuthor() {
+        bitField0_ = (bitField0_ & ~0x00002000);
+        scmAuthor_ = getDefaultInstance().getScmAuthor();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string scmAuthor = 14;</code>
+       */
+      public Builder setScmAuthorBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00002000;
+        scmAuthor_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object actionPlan_ = "";
+      /**
+       * <code>optional string actionPlan = 15;</code>
+       */
+      public boolean hasActionPlan() {
+        return ((bitField0_ & 0x00004000) == 0x00004000);
+      }
+      /**
+       * <code>optional string actionPlan = 15;</code>
+       */
+      public java.lang.String getActionPlan() {
+        java.lang.Object ref = actionPlan_;
+        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()) {
+            actionPlan_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string actionPlan = 15;</code>
+       */
+      public com.google.protobuf.ByteString
+          getActionPlanBytes() {
+        java.lang.Object ref = actionPlan_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          actionPlan_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string actionPlan = 15;</code>
+       */
+      public Builder setActionPlan(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00004000;
+        actionPlan_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string actionPlan = 15;</code>
+       */
+      public Builder clearActionPlan() {
+        bitField0_ = (bitField0_ & ~0x00004000);
+        actionPlan_ = getDefaultInstance().getActionPlan();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string actionPlan = 15;</code>
+       */
+      public Builder setActionPlanBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00004000;
+        actionPlan_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object actionPlanName_ = "";
+      /**
+       * <code>optional string actionPlanName = 16;</code>
+       */
+      public boolean hasActionPlanName() {
+        return ((bitField0_ & 0x00008000) == 0x00008000);
+      }
+      /**
+       * <code>optional string actionPlanName = 16;</code>
+       */
+      public java.lang.String getActionPlanName() {
+        java.lang.Object ref = actionPlanName_;
+        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()) {
+            actionPlanName_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string actionPlanName = 16;</code>
+       */
+      public com.google.protobuf.ByteString
+          getActionPlanNameBytes() {
+        java.lang.Object ref = actionPlanName_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          actionPlanName_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string actionPlanName = 16;</code>
+       */
+      public Builder setActionPlanName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00008000;
+        actionPlanName_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string actionPlanName = 16;</code>
+       */
+      public Builder clearActionPlanName() {
+        bitField0_ = (bitField0_ & ~0x00008000);
+        actionPlanName_ = getDefaultInstance().getActionPlanName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string actionPlanName = 16;</code>
+       */
+      public Builder setActionPlanNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00008000;
+        actionPlanName_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object attr_ = "";
+      /**
+       * <code>optional string attr = 17;</code>
+       */
+      public boolean hasAttr() {
+        return ((bitField0_ & 0x00010000) == 0x00010000);
+      }
+      /**
+       * <code>optional string attr = 17;</code>
+       */
+      public java.lang.String getAttr() {
+        java.lang.Object ref = attr_;
+        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()) {
+            attr_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string attr = 17;</code>
+       */
+      public com.google.protobuf.ByteString
+          getAttrBytes() {
+        java.lang.Object ref = attr_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          attr_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string attr = 17;</code>
+       */
+      public Builder setAttr(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00010000;
+        attr_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string attr = 17;</code>
+       */
+      public Builder clearAttr() {
+        bitField0_ = (bitField0_ & ~0x00010000);
+        attr_ = getDefaultInstance().getAttr();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string attr = 17;</code>
+       */
+      public Builder setAttrBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00010000;
+        attr_ = value;
+        onChanged();
+        return this;
+      }
+
+      private com.google.protobuf.LazyStringList tags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      private void ensureTagsIsMutable() {
+        if (!((bitField0_ & 0x00020000) == 0x00020000)) {
+          tags_ = new com.google.protobuf.LazyStringArrayList(tags_);
+          bitField0_ |= 0x00020000;
+         }
+      }
+      /**
+       * <code>repeated string tags = 18;</code>
+       */
+      public com.google.protobuf.ProtocolStringList
+          getTagsList() {
+        return tags_.getUnmodifiableView();
+      }
+      /**
+       * <code>repeated string tags = 18;</code>
+       */
+      public int getTagsCount() {
+        return tags_.size();
+      }
+      /**
+       * <code>repeated string tags = 18;</code>
+       */
+      public java.lang.String getTags(int index) {
+        return tags_.get(index);
+      }
+      /**
+       * <code>repeated string tags = 18;</code>
+       */
+      public com.google.protobuf.ByteString
+          getTagsBytes(int index) {
+        return tags_.getByteString(index);
+      }
+      /**
+       * <code>repeated string tags = 18;</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 = 18;</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 = 18;</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 = 18;</code>
+       */
+      public Builder clearTags() {
+        tags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00020000);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string tags = 18;</code>
+       */
+      public Builder addTagsBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureTagsIsMutable();
+        tags_.add(value);
+        onChanged();
+        return this;
+      }
+
+      private com.google.protobuf.LazyStringList transitions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      private void ensureTransitionsIsMutable() {
+        if (!((bitField0_ & 0x00040000) == 0x00040000)) {
+          transitions_ = new com.google.protobuf.LazyStringArrayList(transitions_);
+          bitField0_ |= 0x00040000;
+         }
+      }
+      /**
+       * <code>repeated string transitions = 19;</code>
+       */
+      public com.google.protobuf.ProtocolStringList
+          getTransitionsList() {
+        return transitions_.getUnmodifiableView();
+      }
+      /**
+       * <code>repeated string transitions = 19;</code>
+       */
+      public int getTransitionsCount() {
+        return transitions_.size();
+      }
+      /**
+       * <code>repeated string transitions = 19;</code>
+       */
+      public java.lang.String getTransitions(int index) {
+        return transitions_.get(index);
+      }
+      /**
+       * <code>repeated string transitions = 19;</code>
+       */
+      public com.google.protobuf.ByteString
+          getTransitionsBytes(int index) {
+        return transitions_.getByteString(index);
+      }
+      /**
+       * <code>repeated string transitions = 19;</code>
+       */
+      public Builder setTransitions(
+          int index, java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureTransitionsIsMutable();
+        transitions_.set(index, value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string transitions = 19;</code>
+       */
+      public Builder addTransitions(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureTransitionsIsMutable();
+        transitions_.add(value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string transitions = 19;</code>
+       */
+      public Builder addAllTransitions(
+          java.lang.Iterable<java.lang.String> values) {
+        ensureTransitionsIsMutable();
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, transitions_);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string transitions = 19;</code>
+       */
+      public Builder clearTransitions() {
+        transitions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00040000);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string transitions = 19;</code>
+       */
+      public Builder addTransitionsBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureTransitionsIsMutable();
+        transitions_.add(value);
+        onChanged();
+        return this;
+      }
+
+      private com.google.protobuf.LazyStringList actions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      private void ensureActionsIsMutable() {
+        if (!((bitField0_ & 0x00080000) == 0x00080000)) {
+          actions_ = new com.google.protobuf.LazyStringArrayList(actions_);
+          bitField0_ |= 0x00080000;
+         }
+      }
+      /**
+       * <code>repeated string actions = 20;</code>
+       */
+      public com.google.protobuf.ProtocolStringList
+          getActionsList() {
+        return actions_.getUnmodifiableView();
+      }
+      /**
+       * <code>repeated string actions = 20;</code>
+       */
+      public int getActionsCount() {
+        return actions_.size();
+      }
+      /**
+       * <code>repeated string actions = 20;</code>
+       */
+      public java.lang.String getActions(int index) {
+        return actions_.get(index);
+      }
+      /**
+       * <code>repeated string actions = 20;</code>
+       */
+      public com.google.protobuf.ByteString
+          getActionsBytes(int index) {
+        return actions_.getByteString(index);
+      }
+      /**
+       * <code>repeated string actions = 20;</code>
+       */
+      public Builder setActions(
+          int index, java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureActionsIsMutable();
+        actions_.set(index, value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string actions = 20;</code>
+       */
+      public Builder addActions(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureActionsIsMutable();
+        actions_.add(value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string actions = 20;</code>
+       */
+      public Builder addAllActions(
+          java.lang.Iterable<java.lang.String> values) {
+        ensureActionsIsMutable();
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, actions_);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string actions = 20;</code>
+       */
+      public Builder clearActions() {
+        actions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00080000);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string actions = 20;</code>
+       */
+      public Builder addActionsBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureActionsIsMutable();
+        actions_.add(value);
+        onChanged();
+        return this;
+      }
+
+      private java.util.List<org.sonarqube.ws.Issues.Comment> comments_ =
+        java.util.Collections.emptyList();
+      private void ensureCommentsIsMutable() {
+        if (!((bitField0_ & 0x00100000) == 0x00100000)) {
+          comments_ = new java.util.ArrayList<org.sonarqube.ws.Issues.Comment>(comments_);
+          bitField0_ |= 0x00100000;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.sonarqube.ws.Issues.Comment, org.sonarqube.ws.Issues.Comment.Builder, org.sonarqube.ws.Issues.CommentOrBuilder> commentsBuilder_;
+
+      /**
+       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+       */
+      public java.util.List<org.sonarqube.ws.Issues.Comment> getCommentsList() {
+        if (commentsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(comments_);
+        } else {
+          return commentsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+       */
+      public int getCommentsCount() {
+        if (commentsBuilder_ == null) {
+          return comments_.size();
+        } else {
+          return commentsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+       */
+      public org.sonarqube.ws.Issues.Comment getComments(int index) {
+        if (commentsBuilder_ == null) {
+          return comments_.get(index);
+        } else {
+          return commentsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+       */
+      public Builder setComments(
+          int index, org.sonarqube.ws.Issues.Comment value) {
+        if (commentsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureCommentsIsMutable();
+          comments_.set(index, value);
+          onChanged();
+        } else {
+          commentsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+       */
+      public Builder setComments(
+          int index, org.sonarqube.ws.Issues.Comment.Builder builderForValue) {
+        if (commentsBuilder_ == null) {
+          ensureCommentsIsMutable();
+          comments_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          commentsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+       */
+      public Builder addComments(org.sonarqube.ws.Issues.Comment value) {
+        if (commentsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureCommentsIsMutable();
+          comments_.add(value);
+          onChanged();
+        } else {
+          commentsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+       */
+      public Builder addComments(
+          int index, org.sonarqube.ws.Issues.Comment value) {
+        if (commentsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureCommentsIsMutable();
+          comments_.add(index, value);
+          onChanged();
+        } else {
+          commentsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+       */
+      public Builder addComments(
+          org.sonarqube.ws.Issues.Comment.Builder builderForValue) {
+        if (commentsBuilder_ == null) {
+          ensureCommentsIsMutable();
+          comments_.add(builderForValue.build());
+          onChanged();
+        } else {
+          commentsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+       */
+      public Builder addComments(
+          int index, org.sonarqube.ws.Issues.Comment.Builder builderForValue) {
+        if (commentsBuilder_ == null) {
+          ensureCommentsIsMutable();
+          comments_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          commentsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+       */
+      public Builder addAllComments(
+          java.lang.Iterable<? extends org.sonarqube.ws.Issues.Comment> values) {
+        if (commentsBuilder_ == null) {
+          ensureCommentsIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, comments_);
+          onChanged();
+        } else {
+          commentsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+       */
+      public Builder clearComments() {
+        if (commentsBuilder_ == null) {
+          comments_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00100000);
+          onChanged();
+        } else {
+          commentsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+       */
+      public Builder removeComments(int index) {
+        if (commentsBuilder_ == null) {
+          ensureCommentsIsMutable();
+          comments_.remove(index);
+          onChanged();
+        } else {
+          commentsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+       */
+      public org.sonarqube.ws.Issues.Comment.Builder getCommentsBuilder(
+          int index) {
+        return getCommentsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+       */
+      public org.sonarqube.ws.Issues.CommentOrBuilder getCommentsOrBuilder(
+          int index) {
+        if (commentsBuilder_ == null) {
+          return comments_.get(index);  } else {
+          return commentsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+       */
+      public java.util.List<? extends org.sonarqube.ws.Issues.CommentOrBuilder> 
+           getCommentsOrBuilderList() {
+        if (commentsBuilder_ != null) {
+          return commentsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(comments_);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+       */
+      public org.sonarqube.ws.Issues.Comment.Builder addCommentsBuilder() {
+        return getCommentsFieldBuilder().addBuilder(
+            org.sonarqube.ws.Issues.Comment.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+       */
+      public org.sonarqube.ws.Issues.Comment.Builder addCommentsBuilder(
+          int index) {
+        return getCommentsFieldBuilder().addBuilder(
+            index, org.sonarqube.ws.Issues.Comment.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .sonarqube.ws.issues.Comment comments = 21;</code>
+       */
+      public java.util.List<org.sonarqube.ws.Issues.Comment.Builder> 
+           getCommentsBuilderList() {
+        return getCommentsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.sonarqube.ws.Issues.Comment, org.sonarqube.ws.Issues.Comment.Builder, org.sonarqube.ws.Issues.CommentOrBuilder> 
+          getCommentsFieldBuilder() {
+        if (commentsBuilder_ == null) {
+          commentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.sonarqube.ws.Issues.Comment, org.sonarqube.ws.Issues.Comment.Builder, org.sonarqube.ws.Issues.CommentOrBuilder>(
+                  comments_,
+                  ((bitField0_ & 0x00100000) == 0x00100000),
+                  getParentForChildren(),
+                  isClean());
+          comments_ = null;
+        }
+        return commentsBuilder_;
+      }
+
+      private java.lang.Object creationDate_ = "";
+      /**
+       * <code>optional string creationDate = 22;</code>
+       */
+      public boolean hasCreationDate() {
+        return ((bitField0_ & 0x00200000) == 0x00200000);
+      }
+      /**
+       * <code>optional string creationDate = 22;</code>
+       */
+      public java.lang.String getCreationDate() {
+        java.lang.Object ref = creationDate_;
+        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()) {
+            creationDate_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string creationDate = 22;</code>
+       */
+      public com.google.protobuf.ByteString
+          getCreationDateBytes() {
+        java.lang.Object ref = creationDate_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          creationDate_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string creationDate = 22;</code>
+       */
+      public Builder setCreationDate(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00200000;
+        creationDate_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string creationDate = 22;</code>
+       */
+      public Builder clearCreationDate() {
+        bitField0_ = (bitField0_ & ~0x00200000);
+        creationDate_ = getDefaultInstance().getCreationDate();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string creationDate = 22;</code>
+       */
+      public Builder setCreationDateBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00200000;
+        creationDate_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object updateDate_ = "";
+      /**
+       * <code>optional string updateDate = 23;</code>
+       */
+      public boolean hasUpdateDate() {
+        return ((bitField0_ & 0x00400000) == 0x00400000);
+      }
+      /**
+       * <code>optional string updateDate = 23;</code>
+       */
+      public java.lang.String getUpdateDate() {
+        java.lang.Object ref = updateDate_;
+        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()) {
+            updateDate_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string updateDate = 23;</code>
+       */
+      public com.google.protobuf.ByteString
+          getUpdateDateBytes() {
+        java.lang.Object ref = updateDate_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          updateDate_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string updateDate = 23;</code>
+       */
+      public Builder setUpdateDate(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00400000;
+        updateDate_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string updateDate = 23;</code>
+       */
+      public Builder clearUpdateDate() {
+        bitField0_ = (bitField0_ & ~0x00400000);
+        updateDate_ = getDefaultInstance().getUpdateDate();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string updateDate = 23;</code>
+       */
+      public Builder setUpdateDateBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00400000;
+        updateDate_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object fUpdateAge_ = "";
+      /**
+       * <code>optional string fUpdateAge = 24;</code>
+       */
+      public boolean hasFUpdateAge() {
+        return ((bitField0_ & 0x00800000) == 0x00800000);
+      }
+      /**
+       * <code>optional string fUpdateAge = 24;</code>
+       */
+      public java.lang.String getFUpdateAge() {
+        java.lang.Object ref = fUpdateAge_;
+        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()) {
+            fUpdateAge_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string fUpdateAge = 24;</code>
+       */
+      public com.google.protobuf.ByteString
+          getFUpdateAgeBytes() {
+        java.lang.Object ref = fUpdateAge_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          fUpdateAge_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string fUpdateAge = 24;</code>
+       */
+      public Builder setFUpdateAge(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00800000;
+        fUpdateAge_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string fUpdateAge = 24;</code>
+       */
+      public Builder clearFUpdateAge() {
+        bitField0_ = (bitField0_ & ~0x00800000);
+        fUpdateAge_ = getDefaultInstance().getFUpdateAge();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string fUpdateAge = 24;</code>
+       */
+      public Builder setFUpdateAgeBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00800000;
+        fUpdateAge_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object closeDate_ = "";
+      /**
+       * <code>optional string closeDate = 25;</code>
+       */
+      public boolean hasCloseDate() {
+        return ((bitField0_ & 0x01000000) == 0x01000000);
+      }
+      /**
+       * <code>optional string closeDate = 25;</code>
+       */
+      public java.lang.String getCloseDate() {
+        java.lang.Object ref = closeDate_;
+        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()) {
+            closeDate_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string closeDate = 25;</code>
+       */
+      public com.google.protobuf.ByteString
+          getCloseDateBytes() {
+        java.lang.Object ref = closeDate_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          closeDate_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string closeDate = 25;</code>
+       */
+      public Builder setCloseDate(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x01000000;
+        closeDate_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string closeDate = 25;</code>
+       */
+      public Builder clearCloseDate() {
+        bitField0_ = (bitField0_ & ~0x01000000);
+        closeDate_ = getDefaultInstance().getCloseDate();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string closeDate = 25;</code>
+       */
+      public Builder setCloseDateBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x01000000;
+        closeDate_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:sonarqube.ws.issues.Issue)
+    }
+
+    static {
+      defaultInstance = new Issue(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:sonarqube.ws.issues.Issue)
+  }
+
+  public interface CommentOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:sonarqube.ws.issues.Comment)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>optional string key = 1;</code>
+     */
+    boolean hasKey();
+    /**
+     * <code>optional string key = 1;</code>
+     */
+    java.lang.String getKey();
+    /**
+     * <code>optional string key = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getKeyBytes();
+
+    /**
+     * <code>optional string login = 2;</code>
+     */
+    boolean hasLogin();
+    /**
+     * <code>optional string login = 2;</code>
+     */
+    java.lang.String getLogin();
+    /**
+     * <code>optional string login = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getLoginBytes();
+
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    boolean hasEmail();
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    java.lang.String getEmail();
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    com.google.protobuf.ByteString
+        getEmailBytes();
+
+    /**
+     * <code>optional string userName = 4;</code>
+     */
+    boolean hasUserName();
+    /**
+     * <code>optional string userName = 4;</code>
+     */
+    java.lang.String getUserName();
+    /**
+     * <code>optional string userName = 4;</code>
+     */
+    com.google.protobuf.ByteString
+        getUserNameBytes();
+
+    /**
+     * <code>optional string htmlText = 5;</code>
+     */
+    boolean hasHtmlText();
+    /**
+     * <code>optional string htmlText = 5;</code>
+     */
+    java.lang.String getHtmlText();
+    /**
+     * <code>optional string htmlText = 5;</code>
+     */
+    com.google.protobuf.ByteString
+        getHtmlTextBytes();
+
+    /**
+     * <code>optional string markdown = 6;</code>
+     */
+    boolean hasMarkdown();
+    /**
+     * <code>optional string markdown = 6;</code>
+     */
+    java.lang.String getMarkdown();
+    /**
+     * <code>optional string markdown = 6;</code>
+     */
+    com.google.protobuf.ByteString
+        getMarkdownBytes();
+
+    /**
+     * <code>optional bool updatable = 7;</code>
+     */
+    boolean hasUpdatable();
+    /**
+     * <code>optional bool updatable = 7;</code>
+     */
+    boolean getUpdatable();
+
+    /**
+     * <code>optional string createdAt = 8;</code>
+     */
+    boolean hasCreatedAt();
+    /**
+     * <code>optional string createdAt = 8;</code>
+     */
+    java.lang.String getCreatedAt();
+    /**
+     * <code>optional string createdAt = 8;</code>
+     */
+    com.google.protobuf.ByteString
+        getCreatedAtBytes();
+  }
+  /**
+   * Protobuf type {@code sonarqube.ws.issues.Comment}
+   */
+  public static final class Comment extends
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:sonarqube.ws.issues.Comment)
+      CommentOrBuilder {
+    // Use Comment.newBuilder() to construct.
+    private Comment(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Comment(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Comment defaultInstance;
+    public static Comment getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Comment getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Comment(
+        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;
+              key_ = bs;
+              break;
+            }
+            case 18: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000002;
+              login_ = bs;
+              break;
+            }
+            case 26: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000004;
+              email_ = bs;
+              break;
+            }
+            case 34: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000008;
+              userName_ = bs;
+              break;
+            }
+            case 42: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000010;
+              htmlText_ = bs;
+              break;
+            }
+            case 50: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000020;
+              markdown_ = bs;
+              break;
+            }
+            case 56: {
+              bitField0_ |= 0x00000040;
+              updatable_ = input.readBool();
+              break;
+            }
+            case 66: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000080;
+              createdAt_ = 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 {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Comment_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Comment_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.sonarqube.ws.Issues.Comment.class, org.sonarqube.ws.Issues.Comment.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Comment> PARSER =
+        new com.google.protobuf.AbstractParser<Comment>() {
+      public Comment parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Comment(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Comment> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    public static final int KEY_FIELD_NUMBER = 1;
+    private java.lang.Object key_;
+    /**
+     * <code>optional string key = 1;</code>
+     */
+    public boolean hasKey() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional string key = 1;</code>
+     */
+    public java.lang.String getKey() {
+      java.lang.Object ref = key_;
+      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()) {
+          key_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string key = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getKeyBytes() {
+      java.lang.Object ref = key_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        key_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int LOGIN_FIELD_NUMBER = 2;
+    private java.lang.Object login_;
+    /**
+     * <code>optional string login = 2;</code>
+     */
+    public boolean hasLogin() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string login = 2;</code>
+     */
+    public java.lang.String getLogin() {
+      java.lang.Object ref = login_;
+      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()) {
+          login_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string login = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getLoginBytes() {
+      java.lang.Object ref = login_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        login_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int EMAIL_FIELD_NUMBER = 3;
+    private java.lang.Object email_;
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    public boolean hasEmail() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    public java.lang.String getEmail() {
+      java.lang.Object ref = email_;
+      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()) {
+          email_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    public com.google.protobuf.ByteString
+        getEmailBytes() {
+      java.lang.Object ref = email_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        email_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int USERNAME_FIELD_NUMBER = 4;
+    private java.lang.Object userName_;
+    /**
+     * <code>optional string userName = 4;</code>
+     */
+    public boolean hasUserName() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional string userName = 4;</code>
+     */
+    public java.lang.String getUserName() {
+      java.lang.Object ref = userName_;
+      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()) {
+          userName_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string userName = 4;</code>
+     */
+    public com.google.protobuf.ByteString
+        getUserNameBytes() {
+      java.lang.Object ref = userName_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        userName_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int HTMLTEXT_FIELD_NUMBER = 5;
+    private java.lang.Object htmlText_;
+    /**
+     * <code>optional string htmlText = 5;</code>
+     */
+    public boolean hasHtmlText() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional string htmlText = 5;</code>
+     */
+    public java.lang.String getHtmlText() {
+      java.lang.Object ref = htmlText_;
+      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()) {
+          htmlText_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string htmlText = 5;</code>
+     */
+    public com.google.protobuf.ByteString
+        getHtmlTextBytes() {
+      java.lang.Object ref = htmlText_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        htmlText_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int MARKDOWN_FIELD_NUMBER = 6;
+    private java.lang.Object markdown_;
+    /**
+     * <code>optional string markdown = 6;</code>
+     */
+    public boolean hasMarkdown() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional string markdown = 6;</code>
+     */
+    public java.lang.String getMarkdown() {
+      java.lang.Object ref = markdown_;
+      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()) {
+          markdown_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string markdown = 6;</code>
+     */
+    public com.google.protobuf.ByteString
+        getMarkdownBytes() {
+      java.lang.Object ref = markdown_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        markdown_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int UPDATABLE_FIELD_NUMBER = 7;
+    private boolean updatable_;
+    /**
+     * <code>optional bool updatable = 7;</code>
+     */
+    public boolean hasUpdatable() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional bool updatable = 7;</code>
+     */
+    public boolean getUpdatable() {
+      return updatable_;
+    }
+
+    public static final int CREATEDAT_FIELD_NUMBER = 8;
+    private java.lang.Object createdAt_;
+    /**
+     * <code>optional string createdAt = 8;</code>
+     */
+    public boolean hasCreatedAt() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional string createdAt = 8;</code>
+     */
+    public java.lang.String getCreatedAt() {
+      java.lang.Object ref = createdAt_;
+      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()) {
+          createdAt_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string createdAt = 8;</code>
+     */
+    public com.google.protobuf.ByteString
+        getCreatedAtBytes() {
+      java.lang.Object ref = createdAt_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        createdAt_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      key_ = "";
+      login_ = "";
+      email_ = "";
+      userName_ = "";
+      htmlText_ = "";
+      markdown_ = "";
+      updatable_ = false;
+      createdAt_ = "";
+    }
+    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, getKeyBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getLoginBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(3, getEmailBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBytes(4, getUserNameBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeBytes(5, getHtmlTextBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBytes(6, getMarkdownBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeBool(7, updatable_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeBytes(8, getCreatedAtBytes());
+      }
+      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, getKeyBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getLoginBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, getEmailBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, getUserNameBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(5, getHtmlTextBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, getMarkdownBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(7, updatable_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(8, getCreatedAtBytes());
+      }
+      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.sonarqube.ws.Issues.Comment parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonarqube.ws.Issues.Comment parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Issues.Comment parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonarqube.ws.Issues.Comment parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Issues.Comment parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonarqube.ws.Issues.Comment parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Issues.Comment parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.sonarqube.ws.Issues.Comment parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Issues.Comment parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonarqube.ws.Issues.Comment 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.sonarqube.ws.Issues.Comment 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 sonarqube.ws.issues.Comment}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:sonarqube.ws.issues.Comment)
+        org.sonarqube.ws.Issues.CommentOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Comment_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Comment_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.sonarqube.ws.Issues.Comment.class, org.sonarqube.ws.Issues.Comment.Builder.class);
+      }
+
+      // Construct using org.sonarqube.ws.Issues.Comment.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();
+        key_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        login_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        email_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        userName_ = "";
+        bitField0_ = (bitField0_ & ~0x00000008);
+        htmlText_ = "";
+        bitField0_ = (bitField0_ & ~0x00000010);
+        markdown_ = "";
+        bitField0_ = (bitField0_ & ~0x00000020);
+        updatable_ = false;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        createdAt_ = "";
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.sonarqube.ws.Issues.internal_static_sonarqube_ws_issues_Comment_descriptor;
+      }
+
+      public org.sonarqube.ws.Issues.Comment getDefaultInstanceForType() {
+        return org.sonarqube.ws.Issues.Comment.getDefaultInstance();
+      }
+
+      public org.sonarqube.ws.Issues.Comment build() {
+        org.sonarqube.ws.Issues.Comment result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.sonarqube.ws.Issues.Comment buildPartial() {
+        org.sonarqube.ws.Issues.Comment result = new org.sonarqube.ws.Issues.Comment(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.key_ = key_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.login_ = login_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.email_ = email_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.userName_ = userName_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.htmlText_ = htmlText_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.markdown_ = markdown_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.updatable_ = updatable_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.createdAt_ = createdAt_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.sonarqube.ws.Issues.Comment) {
+          return mergeFrom((org.sonarqube.ws.Issues.Comment)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.sonarqube.ws.Issues.Comment other) {
+        if (other == org.sonarqube.ws.Issues.Comment.getDefaultInstance()) return this;
+        if (other.hasKey()) {
+          bitField0_ |= 0x00000001;
+          key_ = other.key_;
+          onChanged();
+        }
+        if (other.hasLogin()) {
+          bitField0_ |= 0x00000002;
+          login_ = other.login_;
+          onChanged();
+        }
+        if (other.hasEmail()) {
+          bitField0_ |= 0x00000004;
+          email_ = other.email_;
+          onChanged();
+        }
+        if (other.hasUserName()) {
+          bitField0_ |= 0x00000008;
+          userName_ = other.userName_;
+          onChanged();
+        }
+        if (other.hasHtmlText()) {
+          bitField0_ |= 0x00000010;
+          htmlText_ = other.htmlText_;
+          onChanged();
+        }
+        if (other.hasMarkdown()) {
+          bitField0_ |= 0x00000020;
+          markdown_ = other.markdown_;
+          onChanged();
+        }
+        if (other.hasUpdatable()) {
+          setUpdatable(other.getUpdatable());
+        }
+        if (other.hasCreatedAt()) {
+          bitField0_ |= 0x00000080;
+          createdAt_ = other.createdAt_;
+          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.sonarqube.ws.Issues.Comment parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.sonarqube.ws.Issues.Comment) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private java.lang.Object key_ = "";
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      public boolean hasKey() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      public java.lang.String getKey() {
+        java.lang.Object ref = key_;
+        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()) {
+            key_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getKeyBytes() {
+        java.lang.Object ref = key_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          key_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      public Builder setKey(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        key_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      public Builder clearKey() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        key_ = getDefaultInstance().getKey();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      public Builder setKeyBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        key_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object login_ = "";
+      /**
+       * <code>optional string login = 2;</code>
+       */
+      public boolean hasLogin() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string login = 2;</code>
+       */
+      public java.lang.String getLogin() {
+        java.lang.Object ref = login_;
+        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()) {
+            login_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string login = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getLoginBytes() {
+        java.lang.Object ref = login_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          login_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string login = 2;</code>
+       */
+      public Builder setLogin(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        login_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string login = 2;</code>
+       */
+      public Builder clearLogin() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        login_ = getDefaultInstance().getLogin();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string login = 2;</code>
+       */
+      public Builder setLoginBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        login_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object email_ = "";
+      /**
+       * <code>optional string email = 3;</code>
+       */
+      public boolean hasEmail() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string email = 3;</code>
+       */
+      public java.lang.String getEmail() {
+        java.lang.Object ref = email_;
+        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()) {
+            email_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string email = 3;</code>
+       */
+      public com.google.protobuf.ByteString
+          getEmailBytes() {
+        java.lang.Object ref = email_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          email_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string email = 3;</code>
+       */
+      public Builder setEmail(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        email_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string email = 3;</code>
+       */
+      public Builder clearEmail() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        email_ = getDefaultInstance().getEmail();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string email = 3;</code>
+       */
+      public Builder setEmailBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        email_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object userName_ = "";
+      /**
+       * <code>optional string userName = 4;</code>
+       */
+      public boolean hasUserName() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional string userName = 4;</code>
+       */
+      public java.lang.String getUserName() {
+        java.lang.Object ref = userName_;
+        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()) {
+            userName_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string userName = 4;</code>
+       */
+      public com.google.protobuf.ByteString
+          getUserNameBytes() {
+        java.lang.Object ref = userName_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          userName_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string userName = 4;</code>
+       */
+      public Builder setUserName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        userName_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string userName = 4;</code>
+       */
+      public Builder clearUserName() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        userName_ = getDefaultInstance().getUserName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string userName = 4;</code>
+       */
+      public Builder setUserNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        userName_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object htmlText_ = "";
+      /**
+       * <code>optional string htmlText = 5;</code>
+       */
+      public boolean hasHtmlText() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional string htmlText = 5;</code>
+       */
+      public java.lang.String getHtmlText() {
+        java.lang.Object ref = htmlText_;
+        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()) {
+            htmlText_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string htmlText = 5;</code>
+       */
+      public com.google.protobuf.ByteString
+          getHtmlTextBytes() {
+        java.lang.Object ref = htmlText_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          htmlText_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string htmlText = 5;</code>
+       */
+      public Builder setHtmlText(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        htmlText_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string htmlText = 5;</code>
+       */
+      public Builder clearHtmlText() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        htmlText_ = getDefaultInstance().getHtmlText();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string htmlText = 5;</code>
+       */
+      public Builder setHtmlTextBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        htmlText_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object markdown_ = "";
+      /**
+       * <code>optional string markdown = 6;</code>
+       */
+      public boolean hasMarkdown() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional string markdown = 6;</code>
+       */
+      public java.lang.String getMarkdown() {
+        java.lang.Object ref = markdown_;
+        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()) {
+            markdown_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string markdown = 6;</code>
+       */
+      public com.google.protobuf.ByteString
+          getMarkdownBytes() {
+        java.lang.Object ref = markdown_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          markdown_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string markdown = 6;</code>
+       */
+      public Builder setMarkdown(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        markdown_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string markdown = 6;</code>
+       */
+      public Builder clearMarkdown() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        markdown_ = getDefaultInstance().getMarkdown();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string markdown = 6;</code>
+       */
+      public Builder setMarkdownBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        markdown_ = value;
+        onChanged();
+        return this;
+      }
+
+      private boolean updatable_ ;
+      /**
+       * <code>optional bool updatable = 7;</code>
+       */
+      public boolean hasUpdatable() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional bool updatable = 7;</code>
+       */
+      public boolean getUpdatable() {
+        return updatable_;
+      }
+      /**
+       * <code>optional bool updatable = 7;</code>
+       */
+      public Builder setUpdatable(boolean value) {
+        bitField0_ |= 0x00000040;
+        updatable_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool updatable = 7;</code>
+       */
+      public Builder clearUpdatable() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        updatable_ = false;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object createdAt_ = "";
+      /**
+       * <code>optional string createdAt = 8;</code>
+       */
+      public boolean hasCreatedAt() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional string createdAt = 8;</code>
+       */
+      public java.lang.String getCreatedAt() {
+        java.lang.Object ref = createdAt_;
+        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()) {
+            createdAt_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string createdAt = 8;</code>
+       */
+      public com.google.protobuf.ByteString
+          getCreatedAtBytes() {
+        java.lang.Object ref = createdAt_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          createdAt_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string createdAt = 8;</code>
+       */
+      public Builder setCreatedAt(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000080;
+        createdAt_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string createdAt = 8;</code>
+       */
+      public Builder clearCreatedAt() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        createdAt_ = getDefaultInstance().getCreatedAt();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string createdAt = 8;</code>
+       */
+      public Builder setCreatedAtBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000080;
+        createdAt_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:sonarqube.ws.issues.Comment)
+    }
+
+    static {
+      defaultInstance = new Comment(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:sonarqube.ws.issues.Comment)
+  }
+
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_sonarqube_ws_issues_Search_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_sonarqube_ws_issues_Search_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_sonarqube_ws_issues_Issue_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_sonarqube_ws_issues_Issue_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_sonarqube_ws_issues_Comment_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_sonarqube_ws_issues_Comment_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\017ws-issues.proto\022\023sonarqube.ws.issues\032\017" +
+      "ws-common.proto\"\235\002\n\006Search\022$\n\006paging\030\001 \001" +
+      "(\0132\024.sonarqube.ws.Paging\022*\n\006issues\030\002 \003(\013" +
+      "2\032.sonarqube.ws.issues.Issue\022#\n\006facets\030\003" +
+      " \003(\0132\023.sonarqube.ws.Facet\022)\n\010projects\030\004 " +
+      "\003(\0132\027.sonarqube.ws.Component\022+\n\ncomponen" +
+      "ts\030\005 \003(\0132\027.sonarqube.ws.Component\022!\n\005rul" +
+      "es\030\006 \003(\0132\022.sonarqube.ws.Rule\022!\n\005users\030\007 " +
+      "\003(\0132\022.sonarqube.ws.User\"\346\003\n\005Issue\022\013\n\003key" +
+      "\030\001 \001(\t\022\014\n\004rule\030\002 \001(\t\022\021\n\tcomponent\030\003 \001(\t\022",
+      "\023\n\013componentId\030\004 \001(\005\022\017\n\007project\030\005 \001(\t\022\022\n" +
+      "\nsubProject\030\006 \001(\t\022\014\n\004line\030\007 \001(\005\022\022\n\nresol" +
+      "ution\030\010 \001(\t\022\016\n\006status\030\t \001(\t\022\017\n\007message\030\n" +
+      " \001(\t\022\014\n\004debt\030\013 \001(\t\022\020\n\010assignee\030\014 \001(\t\022\020\n\010" +
+      "reporter\030\r \001(\t\022\021\n\tscmAuthor\030\016 \001(\t\022\022\n\nact" +
+      "ionPlan\030\017 \001(\t\022\026\n\016actionPlanName\030\020 \001(\t\022\014\n" +
+      "\004attr\030\021 \001(\t\022\014\n\004tags\030\022 \003(\t\022\023\n\013transitions" +
+      "\030\023 \003(\t\022\017\n\007actions\030\024 \003(\t\022.\n\010comments\030\025 \003(" +
+      "\0132\034.sonarqube.ws.issues.Comment\022\024\n\014creat" +
+      "ionDate\030\026 \001(\t\022\022\n\nupdateDate\030\027 \001(\t\022\022\n\nfUp",
+      "dateAge\030\030 \001(\t\022\021\n\tcloseDate\030\031 \001(\t\"\220\001\n\007Com" +
+      "ment\022\013\n\003key\030\001 \001(\t\022\r\n\005login\030\002 \001(\t\022\r\n\005emai" +
+      "l\030\003 \001(\t\022\020\n\010userName\030\004 \001(\t\022\020\n\010htmlText\030\005 " +
+      "\001(\t\022\020\n\010markdown\030\006 \001(\t\022\021\n\tupdatable\030\007 \001(\010" +
+      "\022\021\n\tcreatedAt\030\010 \001(\tB\034\n\020org.sonarqube.wsB" +
+      "\006IssuesH\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.sonarqube.ws.Common.getDescriptor(),
+        }, assigner);
+    internal_static_sonarqube_ws_issues_Search_descriptor =
+      getDescriptor().getMessageTypes().get(0);
+    internal_static_sonarqube_ws_issues_Search_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_sonarqube_ws_issues_Search_descriptor,
+        new java.lang.String[] { "Paging", "Issues", "Facets", "Projects", "Components", "Rules", "Users", });
+    internal_static_sonarqube_ws_issues_Issue_descriptor =
+      getDescriptor().getMessageTypes().get(1);
+    internal_static_sonarqube_ws_issues_Issue_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_sonarqube_ws_issues_Issue_descriptor,
+        new java.lang.String[] { "Key", "Rule", "Component", "ComponentId", "Project", "SubProject", "Line", "Resolution", "Status", "Message", "Debt", "Assignee", "Reporter", "ScmAuthor", "ActionPlan", "ActionPlanName", "Attr", "Tags", "Transitions", "Actions", "Comments", "CreationDate", "UpdateDate", "FUpdateAge", "CloseDate", });
+    internal_static_sonarqube_ws_issues_Comment_descriptor =
+      getDescriptor().getMessageTypes().get(2);
+    internal_static_sonarqube_ws_issues_Comment_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_sonarqube_ws_issues_Comment_descriptor,
+        new java.lang.String[] { "Key", "Login", "Email", "UserName", "HtmlText", "Markdown", "Updatable", "CreatedAt", });
+    org.sonarqube.ws.Common.getDescriptor();
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/sonar-ws/src/main/gen-java/org/sonarqube/ws/Rules.java b/sonar-ws/src/main/gen-java/org/sonarqube/ws/Rules.java
new file mode 100644 (file)
index 0000000..346793f
--- /dev/null
@@ -0,0 +1,1537 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: ws-rules.proto
+
+package org.sonarqube.ws;
+
+public final class Rules {
+  private Rules() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+  }
+  public interface ListResponseOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:sonarqube.ws.rules.ListResponse)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+     */
+    java.util.List<org.sonarqube.ws.Rules.ListResponse.Rule> 
+        getRulesList();
+    /**
+     * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+     */
+    org.sonarqube.ws.Rules.ListResponse.Rule getRules(int index);
+    /**
+     * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+     */
+    int getRulesCount();
+    /**
+     * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+     */
+    java.util.List<? extends org.sonarqube.ws.Rules.ListResponse.RuleOrBuilder> 
+        getRulesOrBuilderList();
+    /**
+     * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+     */
+    org.sonarqube.ws.Rules.ListResponse.RuleOrBuilder getRulesOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code sonarqube.ws.rules.ListResponse}
+   *
+   * <pre>
+   * WS api/rules/list for internal use only
+   * </pre>
+   */
+  public static final class ListResponse extends
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:sonarqube.ws.rules.ListResponse)
+      ListResponseOrBuilder {
+    // Use ListResponse.newBuilder() to construct.
+    private ListResponse(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private ListResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final ListResponse defaultInstance;
+    public static ListResponse getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public ListResponse getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ListResponse(
+        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: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                rules_ = new java.util.ArrayList<org.sonarqube.ws.Rules.ListResponse.Rule>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              rules_.add(input.readMessage(org.sonarqube.ws.Rules.ListResponse.Rule.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_ & 0x00000001) == 0x00000001)) {
+          rules_ = java.util.Collections.unmodifiableList(rules_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.sonarqube.ws.Rules.internal_static_sonarqube_ws_rules_ListResponse_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.sonarqube.ws.Rules.internal_static_sonarqube_ws_rules_ListResponse_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.sonarqube.ws.Rules.ListResponse.class, org.sonarqube.ws.Rules.ListResponse.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<ListResponse> PARSER =
+        new com.google.protobuf.AbstractParser<ListResponse>() {
+      public ListResponse parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ListResponse(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ListResponse> getParserForType() {
+      return PARSER;
+    }
+
+    public interface RuleOrBuilder extends
+        // @@protoc_insertion_point(interface_extends:sonarqube.ws.rules.ListResponse.Rule)
+        com.google.protobuf.MessageOrBuilder {
+
+      /**
+       * <code>optional string repository = 1;</code>
+       */
+      boolean hasRepository();
+      /**
+       * <code>optional string repository = 1;</code>
+       */
+      java.lang.String getRepository();
+      /**
+       * <code>optional string repository = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getRepositoryBytes();
+
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      boolean hasKey();
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      java.lang.String getKey();
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      com.google.protobuf.ByteString
+          getKeyBytes();
+
+      /**
+       * <code>optional string internal_key = 3;</code>
+       */
+      boolean hasInternalKey();
+      /**
+       * <code>optional string internal_key = 3;</code>
+       */
+      java.lang.String getInternalKey();
+      /**
+       * <code>optional string internal_key = 3;</code>
+       */
+      com.google.protobuf.ByteString
+          getInternalKeyBytes();
+    }
+    /**
+     * Protobuf type {@code sonarqube.ws.rules.ListResponse.Rule}
+     */
+    public static final class Rule extends
+        com.google.protobuf.GeneratedMessage implements
+        // @@protoc_insertion_point(message_implements:sonarqube.ws.rules.ListResponse.Rule)
+        RuleOrBuilder {
+      // Use Rule.newBuilder() to construct.
+      private Rule(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Rule(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Rule defaultInstance;
+      public static Rule getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Rule getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Rule(
+          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;
+                repository_ = bs;
+                break;
+              }
+              case 18: {
+                com.google.protobuf.ByteString bs = input.readBytes();
+                bitField0_ |= 0x00000002;
+                key_ = bs;
+                break;
+              }
+              case 26: {
+                com.google.protobuf.ByteString bs = input.readBytes();
+                bitField0_ |= 0x00000004;
+                internalKey_ = 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 {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.sonarqube.ws.Rules.internal_static_sonarqube_ws_rules_ListResponse_Rule_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.sonarqube.ws.Rules.internal_static_sonarqube_ws_rules_ListResponse_Rule_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.sonarqube.ws.Rules.ListResponse.Rule.class, org.sonarqube.ws.Rules.ListResponse.Rule.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Rule> PARSER =
+          new com.google.protobuf.AbstractParser<Rule>() {
+        public Rule parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Rule(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Rule> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      public static final int REPOSITORY_FIELD_NUMBER = 1;
+      private java.lang.Object repository_;
+      /**
+       * <code>optional string repository = 1;</code>
+       */
+      public boolean hasRepository() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional string repository = 1;</code>
+       */
+      public java.lang.String getRepository() {
+        java.lang.Object ref = repository_;
+        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()) {
+            repository_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string repository = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getRepositoryBytes() {
+        java.lang.Object ref = repository_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          repository_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      public static final int KEY_FIELD_NUMBER = 2;
+      private java.lang.Object key_;
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      public boolean hasKey() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      public java.lang.String getKey() {
+        java.lang.Object ref = key_;
+        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()) {
+            key_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getKeyBytes() {
+        java.lang.Object ref = key_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          key_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      public static final int INTERNAL_KEY_FIELD_NUMBER = 3;
+      private java.lang.Object internalKey_;
+      /**
+       * <code>optional string internal_key = 3;</code>
+       */
+      public boolean hasInternalKey() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string internal_key = 3;</code>
+       */
+      public java.lang.String getInternalKey() {
+        java.lang.Object ref = internalKey_;
+        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()) {
+            internalKey_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string internal_key = 3;</code>
+       */
+      public com.google.protobuf.ByteString
+          getInternalKeyBytes() {
+        java.lang.Object ref = internalKey_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          internalKey_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        repository_ = "";
+        key_ = "";
+        internalKey_ = "";
+      }
+      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, getRepositoryBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeBytes(2, getKeyBytes());
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeBytes(3, getInternalKeyBytes());
+        }
+        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, getRepositoryBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(2, getKeyBytes());
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(3, getInternalKeyBytes());
+        }
+        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.sonarqube.ws.Rules.ListResponse.Rule parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.sonarqube.ws.Rules.ListResponse.Rule parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.sonarqube.ws.Rules.ListResponse.Rule parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.sonarqube.ws.Rules.ListResponse.Rule parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.sonarqube.ws.Rules.ListResponse.Rule parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.sonarqube.ws.Rules.ListResponse.Rule parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.sonarqube.ws.Rules.ListResponse.Rule parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.sonarqube.ws.Rules.ListResponse.Rule parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.sonarqube.ws.Rules.ListResponse.Rule parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.sonarqube.ws.Rules.ListResponse.Rule 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.sonarqube.ws.Rules.ListResponse.Rule 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 sonarqube.ws.rules.ListResponse.Rule}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+          // @@protoc_insertion_point(builder_implements:sonarqube.ws.rules.ListResponse.Rule)
+          org.sonarqube.ws.Rules.ListResponse.RuleOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.sonarqube.ws.Rules.internal_static_sonarqube_ws_rules_ListResponse_Rule_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.sonarqube.ws.Rules.internal_static_sonarqube_ws_rules_ListResponse_Rule_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.sonarqube.ws.Rules.ListResponse.Rule.class, org.sonarqube.ws.Rules.ListResponse.Rule.Builder.class);
+        }
+
+        // Construct using org.sonarqube.ws.Rules.ListResponse.Rule.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();
+          repository_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          key_ = "";
+          bitField0_ = (bitField0_ & ~0x00000002);
+          internalKey_ = "";
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.sonarqube.ws.Rules.internal_static_sonarqube_ws_rules_ListResponse_Rule_descriptor;
+        }
+
+        public org.sonarqube.ws.Rules.ListResponse.Rule getDefaultInstanceForType() {
+          return org.sonarqube.ws.Rules.ListResponse.Rule.getDefaultInstance();
+        }
+
+        public org.sonarqube.ws.Rules.ListResponse.Rule build() {
+          org.sonarqube.ws.Rules.ListResponse.Rule result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.sonarqube.ws.Rules.ListResponse.Rule buildPartial() {
+          org.sonarqube.ws.Rules.ListResponse.Rule result = new org.sonarqube.ws.Rules.ListResponse.Rule(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.repository_ = repository_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.key_ = key_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.internalKey_ = internalKey_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.sonarqube.ws.Rules.ListResponse.Rule) {
+            return mergeFrom((org.sonarqube.ws.Rules.ListResponse.Rule)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.sonarqube.ws.Rules.ListResponse.Rule other) {
+          if (other == org.sonarqube.ws.Rules.ListResponse.Rule.getDefaultInstance()) return this;
+          if (other.hasRepository()) {
+            bitField0_ |= 0x00000001;
+            repository_ = other.repository_;
+            onChanged();
+          }
+          if (other.hasKey()) {
+            bitField0_ |= 0x00000002;
+            key_ = other.key_;
+            onChanged();
+          }
+          if (other.hasInternalKey()) {
+            bitField0_ |= 0x00000004;
+            internalKey_ = other.internalKey_;
+            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.sonarqube.ws.Rules.ListResponse.Rule parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.sonarqube.ws.Rules.ListResponse.Rule) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        private java.lang.Object repository_ = "";
+        /**
+         * <code>optional string repository = 1;</code>
+         */
+        public boolean hasRepository() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional string repository = 1;</code>
+         */
+        public java.lang.String getRepository() {
+          java.lang.Object ref = repository_;
+          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()) {
+              repository_ = s;
+            }
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string repository = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getRepositoryBytes() {
+          java.lang.Object ref = repository_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            repository_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string repository = 1;</code>
+         */
+        public Builder setRepository(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          repository_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string repository = 1;</code>
+         */
+        public Builder clearRepository() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          repository_ = getDefaultInstance().getRepository();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string repository = 1;</code>
+         */
+        public Builder setRepositoryBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          repository_ = value;
+          onChanged();
+          return this;
+        }
+
+        private java.lang.Object key_ = "";
+        /**
+         * <code>optional string key = 2;</code>
+         */
+        public boolean hasKey() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional string key = 2;</code>
+         */
+        public java.lang.String getKey() {
+          java.lang.Object ref = key_;
+          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()) {
+              key_ = s;
+            }
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string key = 2;</code>
+         */
+        public com.google.protobuf.ByteString
+            getKeyBytes() {
+          java.lang.Object ref = key_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            key_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string key = 2;</code>
+         */
+        public Builder setKey(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          key_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string key = 2;</code>
+         */
+        public Builder clearKey() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          key_ = getDefaultInstance().getKey();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string key = 2;</code>
+         */
+        public Builder setKeyBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          key_ = value;
+          onChanged();
+          return this;
+        }
+
+        private java.lang.Object internalKey_ = "";
+        /**
+         * <code>optional string internal_key = 3;</code>
+         */
+        public boolean hasInternalKey() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional string internal_key = 3;</code>
+         */
+        public java.lang.String getInternalKey() {
+          java.lang.Object ref = internalKey_;
+          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()) {
+              internalKey_ = s;
+            }
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string internal_key = 3;</code>
+         */
+        public com.google.protobuf.ByteString
+            getInternalKeyBytes() {
+          java.lang.Object ref = internalKey_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            internalKey_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string internal_key = 3;</code>
+         */
+        public Builder setInternalKey(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          internalKey_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string internal_key = 3;</code>
+         */
+        public Builder clearInternalKey() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          internalKey_ = getDefaultInstance().getInternalKey();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string internal_key = 3;</code>
+         */
+        public Builder setInternalKeyBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          internalKey_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:sonarqube.ws.rules.ListResponse.Rule)
+      }
+
+      static {
+        defaultInstance = new Rule(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:sonarqube.ws.rules.ListResponse.Rule)
+    }
+
+    public static final int RULES_FIELD_NUMBER = 1;
+    private java.util.List<org.sonarqube.ws.Rules.ListResponse.Rule> rules_;
+    /**
+     * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+     */
+    public java.util.List<org.sonarqube.ws.Rules.ListResponse.Rule> getRulesList() {
+      return rules_;
+    }
+    /**
+     * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+     */
+    public java.util.List<? extends org.sonarqube.ws.Rules.ListResponse.RuleOrBuilder> 
+        getRulesOrBuilderList() {
+      return rules_;
+    }
+    /**
+     * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+     */
+    public int getRulesCount() {
+      return rules_.size();
+    }
+    /**
+     * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+     */
+    public org.sonarqube.ws.Rules.ListResponse.Rule getRules(int index) {
+      return rules_.get(index);
+    }
+    /**
+     * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+     */
+    public org.sonarqube.ws.Rules.ListResponse.RuleOrBuilder getRulesOrBuilder(
+        int index) {
+      return rules_.get(index);
+    }
+
+    private void initFields() {
+      rules_ = 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();
+      for (int i = 0; i < rules_.size(); i++) {
+        output.writeMessage(1, rules_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < rules_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, rules_.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.sonarqube.ws.Rules.ListResponse parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonarqube.ws.Rules.ListResponse parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Rules.ListResponse parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.sonarqube.ws.Rules.ListResponse parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Rules.ListResponse parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonarqube.ws.Rules.ListResponse parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Rules.ListResponse parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.sonarqube.ws.Rules.ListResponse parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.sonarqube.ws.Rules.ListResponse parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.sonarqube.ws.Rules.ListResponse 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.sonarqube.ws.Rules.ListResponse 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 sonarqube.ws.rules.ListResponse}
+     *
+     * <pre>
+     * WS api/rules/list for internal use only
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:sonarqube.ws.rules.ListResponse)
+        org.sonarqube.ws.Rules.ListResponseOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.sonarqube.ws.Rules.internal_static_sonarqube_ws_rules_ListResponse_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.sonarqube.ws.Rules.internal_static_sonarqube_ws_rules_ListResponse_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.sonarqube.ws.Rules.ListResponse.class, org.sonarqube.ws.Rules.ListResponse.Builder.class);
+      }
+
+      // Construct using org.sonarqube.ws.Rules.ListResponse.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getRulesFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (rulesBuilder_ == null) {
+          rules_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          rulesBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.sonarqube.ws.Rules.internal_static_sonarqube_ws_rules_ListResponse_descriptor;
+      }
+
+      public org.sonarqube.ws.Rules.ListResponse getDefaultInstanceForType() {
+        return org.sonarqube.ws.Rules.ListResponse.getDefaultInstance();
+      }
+
+      public org.sonarqube.ws.Rules.ListResponse build() {
+        org.sonarqube.ws.Rules.ListResponse result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.sonarqube.ws.Rules.ListResponse buildPartial() {
+        org.sonarqube.ws.Rules.ListResponse result = new org.sonarqube.ws.Rules.ListResponse(this);
+        int from_bitField0_ = bitField0_;
+        if (rulesBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            rules_ = java.util.Collections.unmodifiableList(rules_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.rules_ = rules_;
+        } else {
+          result.rules_ = rulesBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.sonarqube.ws.Rules.ListResponse) {
+          return mergeFrom((org.sonarqube.ws.Rules.ListResponse)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.sonarqube.ws.Rules.ListResponse other) {
+        if (other == org.sonarqube.ws.Rules.ListResponse.getDefaultInstance()) return this;
+        if (rulesBuilder_ == null) {
+          if (!other.rules_.isEmpty()) {
+            if (rules_.isEmpty()) {
+              rules_ = other.rules_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureRulesIsMutable();
+              rules_.addAll(other.rules_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.rules_.isEmpty()) {
+            if (rulesBuilder_.isEmpty()) {
+              rulesBuilder_.dispose();
+              rulesBuilder_ = null;
+              rules_ = other.rules_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              rulesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getRulesFieldBuilder() : null;
+            } else {
+              rulesBuilder_.addAllMessages(other.rules_);
+            }
+          }
+        }
+        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.sonarqube.ws.Rules.ListResponse parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.sonarqube.ws.Rules.ListResponse) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private java.util.List<org.sonarqube.ws.Rules.ListResponse.Rule> rules_ =
+        java.util.Collections.emptyList();
+      private void ensureRulesIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          rules_ = new java.util.ArrayList<org.sonarqube.ws.Rules.ListResponse.Rule>(rules_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.sonarqube.ws.Rules.ListResponse.Rule, org.sonarqube.ws.Rules.ListResponse.Rule.Builder, org.sonarqube.ws.Rules.ListResponse.RuleOrBuilder> rulesBuilder_;
+
+      /**
+       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+       */
+      public java.util.List<org.sonarqube.ws.Rules.ListResponse.Rule> getRulesList() {
+        if (rulesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(rules_);
+        } else {
+          return rulesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+       */
+      public int getRulesCount() {
+        if (rulesBuilder_ == null) {
+          return rules_.size();
+        } else {
+          return rulesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+       */
+      public org.sonarqube.ws.Rules.ListResponse.Rule getRules(int index) {
+        if (rulesBuilder_ == null) {
+          return rules_.get(index);
+        } else {
+          return rulesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+       */
+      public Builder setRules(
+          int index, org.sonarqube.ws.Rules.ListResponse.Rule value) {
+        if (rulesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureRulesIsMutable();
+          rules_.set(index, value);
+          onChanged();
+        } else {
+          rulesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+       */
+      public Builder setRules(
+          int index, org.sonarqube.ws.Rules.ListResponse.Rule.Builder builderForValue) {
+        if (rulesBuilder_ == null) {
+          ensureRulesIsMutable();
+          rules_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          rulesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+       */
+      public Builder addRules(org.sonarqube.ws.Rules.ListResponse.Rule value) {
+        if (rulesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureRulesIsMutable();
+          rules_.add(value);
+          onChanged();
+        } else {
+          rulesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+       */
+      public Builder addRules(
+          int index, org.sonarqube.ws.Rules.ListResponse.Rule value) {
+        if (rulesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureRulesIsMutable();
+          rules_.add(index, value);
+          onChanged();
+        } else {
+          rulesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+       */
+      public Builder addRules(
+          org.sonarqube.ws.Rules.ListResponse.Rule.Builder builderForValue) {
+        if (rulesBuilder_ == null) {
+          ensureRulesIsMutable();
+          rules_.add(builderForValue.build());
+          onChanged();
+        } else {
+          rulesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+       */
+      public Builder addRules(
+          int index, org.sonarqube.ws.Rules.ListResponse.Rule.Builder builderForValue) {
+        if (rulesBuilder_ == null) {
+          ensureRulesIsMutable();
+          rules_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          rulesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+       */
+      public Builder addAllRules(
+          java.lang.Iterable<? extends org.sonarqube.ws.Rules.ListResponse.Rule> values) {
+        if (rulesBuilder_ == null) {
+          ensureRulesIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, rules_);
+          onChanged();
+        } else {
+          rulesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+       */
+      public Builder clearRules() {
+        if (rulesBuilder_ == null) {
+          rules_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          rulesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+       */
+      public Builder removeRules(int index) {
+        if (rulesBuilder_ == null) {
+          ensureRulesIsMutable();
+          rules_.remove(index);
+          onChanged();
+        } else {
+          rulesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+       */
+      public org.sonarqube.ws.Rules.ListResponse.Rule.Builder getRulesBuilder(
+          int index) {
+        return getRulesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+       */
+      public org.sonarqube.ws.Rules.ListResponse.RuleOrBuilder getRulesOrBuilder(
+          int index) {
+        if (rulesBuilder_ == null) {
+          return rules_.get(index);  } else {
+          return rulesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+       */
+      public java.util.List<? extends org.sonarqube.ws.Rules.ListResponse.RuleOrBuilder> 
+           getRulesOrBuilderList() {
+        if (rulesBuilder_ != null) {
+          return rulesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(rules_);
+        }
+      }
+      /**
+       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+       */
+      public org.sonarqube.ws.Rules.ListResponse.Rule.Builder addRulesBuilder() {
+        return getRulesFieldBuilder().addBuilder(
+            org.sonarqube.ws.Rules.ListResponse.Rule.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+       */
+      public org.sonarqube.ws.Rules.ListResponse.Rule.Builder addRulesBuilder(
+          int index) {
+        return getRulesFieldBuilder().addBuilder(
+            index, org.sonarqube.ws.Rules.ListResponse.Rule.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .sonarqube.ws.rules.ListResponse.Rule rules = 1;</code>
+       */
+      public java.util.List<org.sonarqube.ws.Rules.ListResponse.Rule.Builder> 
+           getRulesBuilderList() {
+        return getRulesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.sonarqube.ws.Rules.ListResponse.Rule, org.sonarqube.ws.Rules.ListResponse.Rule.Builder, org.sonarqube.ws.Rules.ListResponse.RuleOrBuilder> 
+          getRulesFieldBuilder() {
+        if (rulesBuilder_ == null) {
+          rulesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.sonarqube.ws.Rules.ListResponse.Rule, org.sonarqube.ws.Rules.ListResponse.Rule.Builder, org.sonarqube.ws.Rules.ListResponse.RuleOrBuilder>(
+                  rules_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          rules_ = null;
+        }
+        return rulesBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:sonarqube.ws.rules.ListResponse)
+    }
+
+    static {
+      defaultInstance = new ListResponse(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:sonarqube.ws.rules.ListResponse)
+  }
+
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_sonarqube_ws_rules_ListResponse_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_sonarqube_ws_rules_ListResponse_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_sonarqube_ws_rules_ListResponse_Rule_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_sonarqube_ws_rules_ListResponse_Rule_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\016ws-rules.proto\022\022sonarqube.ws.rules\"\203\001\n" +
+      "\014ListResponse\0224\n\005rules\030\001 \003(\0132%.sonarqube" +
+      ".ws.rules.ListResponse.Rule\032=\n\004Rule\022\022\n\nr" +
+      "epository\030\001 \001(\t\022\013\n\003key\030\002 \001(\t\022\024\n\014internal" +
+      "_key\030\003 \001(\tB\033\n\020org.sonarqube.wsB\005RulesH\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[] {
+        }, assigner);
+    internal_static_sonarqube_ws_rules_ListResponse_descriptor =
+      getDescriptor().getMessageTypes().get(0);
+    internal_static_sonarqube_ws_rules_ListResponse_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_sonarqube_ws_rules_ListResponse_descriptor,
+        new java.lang.String[] { "Rules", });
+    internal_static_sonarqube_ws_rules_ListResponse_Rule_descriptor =
+      internal_static_sonarqube_ws_rules_ListResponse_descriptor.getNestedTypes().get(0);
+    internal_static_sonarqube_ws_rules_ListResponse_Rule_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_sonarqube_ws_rules_ListResponse_Rule_descriptor,
+        new java.lang.String[] { "Repository", "Key", "InternalKey", });
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/sonar-ws/src/main/protobuf/ws-common.proto b/sonar-ws/src/main/protobuf/ws-common.proto
new file mode 100644 (file)
index 0000000..ecebd52
--- /dev/null
@@ -0,0 +1,81 @@
+// 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.
+
+syntax = "proto2";
+
+package sonarqube.ws;
+
+option java_package = "org.sonarqube.ws";
+option java_outer_classname = "Common";
+option optimize_for = SPEED;
+
+message Paging {
+  optional int32 page_index = 1;
+  optional int32 page_size = 2;
+  optional int32 total = 3;
+  optional int32 pages = 4;
+}
+
+message Facet {
+  // kind of key
+  optional string property = 1;
+  repeated FacetValue values = 2;
+}
+
+message FacetValue {
+  optional string val = 1;
+  optional int64 count = 2;
+}
+
+message Component {
+  optional string uuid = 1;
+  optional string key = 2;
+  optional int32 id = 3;
+  optional bool enabled = 4;
+  optional string qualifier = 5;
+  optional string name = 6;
+  optional string longName = 7;
+  optional string path = 8;
+  optional int32 projectId = 9;
+  optional int32 subProjectId = 10;
+}
+
+message Rule {
+  optional string key = 1;
+  optional string name = 2;
+  optional string lang = 3;
+  // TODO what's the format ?
+  optional string desc = 4;
+  optional RuleStatus status = 5;
+  // TODO missing 'lang'
+  optional string langName = 6;
+}
+
+enum RuleStatus {
+  BETA = 0;
+  DEPRECATED = 1;
+  READY = 2;
+  REMOVED = 3;
+}
+
+message User {
+  optional string login = 1;
+  optional string name = 2;
+  optional string email = 3;
+  optional bool active = 4;
+}
diff --git a/sonar-ws/src/main/protobuf/ws-issues.proto b/sonar-ws/src/main/protobuf/ws-issues.proto
new file mode 100644 (file)
index 0000000..d8129a3
--- /dev/null
@@ -0,0 +1,78 @@
+// 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.
+
+syntax = "proto2";
+
+package sonarqube.ws.issues;
+
+import "ws-common.proto";
+
+option java_package = "org.sonarqube.ws";
+option java_outer_classname = "Issues";
+option optimize_for = SPEED;
+
+// Response of URL api/issues/search
+message Search {
+  // TODO errors
+  optional Paging paging = 1;
+  repeated Issue issues = 2;
+  repeated Facet facets = 3;
+  repeated Component projects = 4;
+  repeated Component components = 5;
+  repeated Rule rules = 6;
+  repeated User users = 7;
+}
+
+message Issue {
+  optional string key = 1;
+  optional string rule = 2;
+  optional string component = 3;
+  optional int32 componentId = 4;
+  optional string project = 5;
+  optional string subProject = 6;
+  optional int32 line = 7;
+  optional string resolution = 8;
+  optional string status = 9;
+  optional string message = 10;
+  optional string debt = 11;
+  optional string assignee = 12;
+  optional string reporter = 13;
+  optional string scmAuthor = 14;
+  optional string actionPlan = 15;
+  optional string actionPlanName = 16;
+  optional string attr = 17;
+  repeated string tags = 18;
+  repeated string transitions = 19;
+  repeated string actions = 20;
+  repeated Comment comments = 21;
+  optional string creationDate= 22;
+  optional string updateDate= 23;
+  optional string fUpdateAge= 24;
+  optional string closeDate= 25;
+}
+
+message Comment {
+  optional string key = 1;
+  optional string login = 2;
+  optional string email = 3;
+  optional string userName = 4;
+  optional string htmlText = 5;
+  optional string markdown = 6;
+  optional bool updatable = 7;
+  optional string createdAt = 8;
+}
diff --git a/sonar-ws/src/main/protobuf/ws-rules.proto b/sonar-ws/src/main/protobuf/ws-rules.proto
new file mode 100644 (file)
index 0000000..264137d
--- /dev/null
@@ -0,0 +1,38 @@
+// 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.
+
+syntax = "proto2";
+
+package sonarqube.ws.rules;
+
+option java_package = "org.sonarqube.ws";
+option java_outer_classname = "Rules";
+option optimize_for = SPEED;
+
+// WS api/rules/list for internal use only
+message ListResponse {
+
+  message Rule {
+    optional string repository = 1;
+    optional string key = 2;
+    optional string internal_key = 3;
+  }
+
+  repeated Rule rules = 1;
+
+}