You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2018/10/10 03:54:21 UTC

[incubator-servicecomb-java-chassis] 01/09: [SCB-918] prepare pojo and protobuf model for test

This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git

commit c298d5c303927903d1a36f0f256c9a9ffdeb8ca1
Author: wujimin <wu...@huawei.com>
AuthorDate: Thu Sep 27 22:17:53 2018 +0800

    [SCB-918] prepare pojo and protobuf model for test
---
 .../foundation/protobuf/internal/model/Color.java  |   22 +
 .../protobuf/internal/model/CustomGeneric.java     |   21 +
 .../protobuf/internal/model/ProtobufRoot.java      | 5033 ++++++++++++++++++++
 .../foundation/protobuf/internal/model/Root.java   |  262 +
 .../foundation/protobuf/internal/model/User.java   |   51 +
 .../{protobufRoot.proto => jacksonRoot.proto}      |   50 +-
 .../src/test/resources/protobufRoot.proto          |    3 +-
 7 files changed, 5411 insertions(+), 31 deletions(-)

diff --git a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/Color.java b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/Color.java
new file mode 100644
index 0000000..19c724f
--- /dev/null
+++ b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/Color.java
@@ -0,0 +1,22 @@
+package org.apache.servicecomb.foundation.protobuf.internal.model;/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+public enum Color {
+  RED,
+  YELLOW,
+  BLUE
+}
diff --git a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/CustomGeneric.java b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/CustomGeneric.java
new file mode 100644
index 0000000..5cbb1ef
--- /dev/null
+++ b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/CustomGeneric.java
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicecomb.foundation.protobuf.internal.model;
+
+public class CustomGeneric<T> {
+  public T user;
+}
\ No newline at end of file
diff --git a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/ProtobufRoot.java b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/ProtobufRoot.java
new file mode 100644
index 0000000..6dbe9f0
--- /dev/null
+++ b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/ProtobufRoot.java
@@ -0,0 +1,5033 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: protobufRoot.proto
+
+package org.apache.servicecomb.foundation.protobuf.internal.model;
+
+@SuppressWarnings("all")
+public final class ProtobufRoot {
+  private ProtobufRoot() {
+  }
+
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistryLite registry) {
+  }
+
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+    registerAllExtensions(
+        (com.google.protobuf.ExtensionRegistryLite) registry);
+  }
+
+  /**
+   * Protobuf enum {@code org.apache.servicecomb.foundation.protobuf.internal.model.Color}
+   */
+  public enum Color
+      implements com.google.protobuf.ProtocolMessageEnum {
+    /**
+     * <code>RED = 0;</code>
+     */
+    RED(0),
+    /**
+     * <code>YELLOW = 1;</code>
+     */
+    YELLOW(1),
+    /**
+     * <code>BLUE = 2;</code>
+     */
+    BLUE(2),
+    UNRECOGNIZED(-1),;
+
+    /**
+     * <code>RED = 0;</code>
+     */
+    public static final int RED_VALUE = 0;
+
+    /**
+     * <code>YELLOW = 1;</code>
+     */
+    public static final int YELLOW_VALUE = 1;
+
+    /**
+     * <code>BLUE = 2;</code>
+     */
+    public static final int BLUE_VALUE = 2;
+
+
+    public final int getNumber() {
+      if (this == UNRECOGNIZED) {
+        throw new IllegalArgumentException(
+            "Can't get the number of an unknown enum value.");
+      }
+      return value;
+    }
+
+    /**
+     * @deprecated Use {@link #forNumber(int)} instead.
+     */
+    @Deprecated
+    public static Color valueOf(int value) {
+      return forNumber(value);
+    }
+
+    public static Color forNumber(int value) {
+      switch (value) {
+        case 0:
+          return RED;
+        case 1:
+          return YELLOW;
+        case 2:
+          return BLUE;
+        default:
+          return null;
+      }
+    }
+
+    public static com.google.protobuf.Internal.EnumLiteMap<Color>
+    internalGetValueMap() {
+      return internalValueMap;
+    }
+
+    private static final com.google.protobuf.Internal.EnumLiteMap<
+        Color> internalValueMap =
+        new com.google.protobuf.Internal.EnumLiteMap<Color>() {
+          public Color findValueByNumber(int number) {
+            return Color.forNumber(number);
+          }
+        };
+
+    public final com.google.protobuf.Descriptors.EnumValueDescriptor
+    getValueDescriptor() {
+      return getDescriptor().getValues().get(ordinal());
+    }
+
+    public final com.google.protobuf.Descriptors.EnumDescriptor
+    getDescriptorForType() {
+      return getDescriptor();
+    }
+
+    public static final com.google.protobuf.Descriptors.EnumDescriptor
+    getDescriptor() {
+      return ProtobufRoot.getDescriptor().getEnumTypes().get(0);
+    }
+
+    private static final Color[] VALUES = values();
+
+    public static Color valueOf(
+        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+      if (desc.getType() != getDescriptor()) {
+        throw new IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+      }
+      if (desc.getIndex() == -1) {
+        return UNRECOGNIZED;
+      }
+      return VALUES[desc.getIndex()];
+    }
+
+    private final int value;
+
+    private Color(int value) {
+      this.value = value;
+    }
+
+    // @@protoc_insertion_point(enum_scope:org.apache.servicecomb.foundation.protobuf.internal.model.Color)
+  }
+
+  public interface RootOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:org.apache.servicecomb.foundation.protobuf.internal.model.Root)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>int32 int32 = 1;</code>
+     */
+    int getInt32();
+
+    /**
+     * <code>int64 int64 = 2;</code>
+     */
+    long getInt64();
+
+    /**
+     * <code>uint32 uint32 = 3;</code>
+     */
+    int getUint32();
+
+    /**
+     * <code>uint64 uint64 = 4;</code>
+     */
+    long getUint64();
+
+    /**
+     * <code>sint32 sint32 = 5;</code>
+     */
+    int getSint32();
+
+    /**
+     * <code>sint64 sint64 = 6;</code>
+     */
+    long getSint64();
+
+    /**
+     * <code>fixed32 fixed32 = 7;</code>
+     */
+    int getFixed32();
+
+    /**
+     * <code>fixed64 fixed64 = 8;</code>
+     */
+    long getFixed64();
+
+    /**
+     * <code>sfixed32 sfixed32 = 9;</code>
+     */
+    int getSfixed32();
+
+    /**
+     * <code>sfixed64 sfixed64 = 10;</code>
+     */
+    long getSfixed64();
+
+    /**
+     * <code>float floatValue = 11;</code>
+     */
+    float getFloatValue();
+
+    /**
+     * <code>double doubleValue = 12;</code>
+     */
+    double getDoubleValue();
+
+    /**
+     * <code>bool bool = 13;</code>
+     */
+    boolean getBool();
+
+    /**
+     * <code>string string = 14;</code>
+     */
+    String getString();
+
+    /**
+     * <code>string string = 14;</code>
+     */
+    com.google.protobuf.ByteString
+    getStringBytes();
+
+    /**
+     * <code>bytes bytes = 15;</code>
+     */
+    com.google.protobuf.ByteString getBytes();
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Color color = 16;</code>
+     */
+    int getColorValue();
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Color color = 16;</code>
+     */
+    Color getColor();
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.User user = 17;</code>
+     */
+    boolean hasUser();
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.User user = 17;</code>
+     */
+    User getUser();
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.User user = 17;</code>
+     */
+    UserOrBuilder getUserOrBuilder();
+
+    /**
+     * <code>map&lt;string, string&gt; ssMap = 18;</code>
+     */
+    int getSsMapCount();
+
+    /**
+     * <code>map&lt;string, string&gt; ssMap = 18;</code>
+     */
+    boolean containsSsMap(
+        String key);
+
+    /**
+     * Use {@link #getSsMapMap()} instead.
+     */
+    @Deprecated
+    java.util.Map<String, String>
+    getSsMap();
+
+    /**
+     * <code>map&lt;string, string&gt; ssMap = 18;</code>
+     */
+    java.util.Map<String, String>
+    getSsMapMap();
+
+    /**
+     * <code>map&lt;string, string&gt; ssMap = 18;</code>
+     */
+
+    String getSsMapOrDefault(
+        String key,
+        String defaultValue);
+
+    /**
+     * <code>map&lt;string, string&gt; ssMap = 18;</code>
+     */
+
+    String getSsMapOrThrow(
+        String key);
+
+    /**
+     * <code>map&lt;string, .org.apache.servicecomb.foundation.protobuf.internal.model.User&gt; spMap = 19;</code>
+     */
+    int getSpMapCount();
+
+    /**
+     * <code>map&lt;string, .org.apache.servicecomb.foundation.protobuf.internal.model.User&gt; spMap = 19;</code>
+     */
+    boolean containsSpMap(
+        String key);
+
+    /**
+     * Use {@link #getSpMapMap()} instead.
+     */
+    @Deprecated
+    java.util.Map<String, User>
+    getSpMap();
+
+    /**
+     * <code>map&lt;string, .org.apache.servicecomb.foundation.protobuf.internal.model.User&gt; spMap = 19;</code>
+     */
+    java.util.Map<String, User>
+    getSpMapMap();
+
+    /**
+     * <code>map&lt;string, .org.apache.servicecomb.foundation.protobuf.internal.model.User&gt; spMap = 19;</code>
+     */
+
+    User getSpMapOrDefault(
+        String key,
+        User defaultValue);
+
+    /**
+     * <code>map&lt;string, .org.apache.servicecomb.foundation.protobuf.internal.model.User&gt; spMap = 19;</code>
+     */
+
+    User getSpMapOrThrow(
+        String key);
+
+    /**
+     * <code>repeated string sList = 20;</code>
+     */
+    java.util.List<String>
+    getSListList();
+
+    /**
+     * <code>repeated string sList = 20;</code>
+     */
+    int getSListCount();
+
+    /**
+     * <code>repeated string sList = 20;</code>
+     */
+    String getSList(int index);
+
+    /**
+     * <code>repeated string sList = 20;</code>
+     */
+    com.google.protobuf.ByteString
+    getSListBytes(int index);
+
+    /**
+     * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+     */
+    java.util.List<User>
+    getPListList();
+
+    /**
+     * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+     */
+    User getPList(int index);
+
+    /**
+     * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+     */
+    int getPListCount();
+
+    /**
+     * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+     */
+    java.util.List<? extends UserOrBuilder>
+    getPListOrBuilderList();
+
+    /**
+     * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+     */
+    UserOrBuilder getPListOrBuilder(
+        int index);
+
+    /**
+     * <code>.google.protobuf.Any any = 22;</code>
+     */
+    boolean hasAny();
+
+    /**
+     * <code>.google.protobuf.Any any = 22;</code>
+     */
+    com.google.protobuf.Any getAny();
+
+    /**
+     * <code>.google.protobuf.Any any = 22;</code>
+     */
+    com.google.protobuf.AnyOrBuilder getAnyOrBuilder();
+
+    /**
+     * <code>repeated .google.protobuf.Any anys = 23;</code>
+     */
+    java.util.List<com.google.protobuf.Any>
+    getAnysList();
+
+    /**
+     * <code>repeated .google.protobuf.Any anys = 23;</code>
+     */
+    com.google.protobuf.Any getAnys(int index);
+
+    /**
+     * <code>repeated .google.protobuf.Any anys = 23;</code>
+     */
+    int getAnysCount();
+
+    /**
+     * <code>repeated .google.protobuf.Any anys = 23;</code>
+     */
+    java.util.List<? extends com.google.protobuf.AnyOrBuilder>
+    getAnysOrBuilderList();
+
+    /**
+     * <code>repeated .google.protobuf.Any anys = 23;</code>
+     */
+    com.google.protobuf.AnyOrBuilder getAnysOrBuilder(
+        int index);
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 24;</code>
+     */
+    boolean hasTypeRecursive();
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 24;</code>
+     */
+    Root getTypeRecursive();
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 24;</code>
+     */
+    RootOrBuilder getTypeRecursiveOrBuilder();
+  }
+
+  /**
+   * Protobuf type {@code org.apache.servicecomb.foundation.protobuf.internal.model.Root}
+   */
+  public static final class Root extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:org.apache.servicecomb.foundation.protobuf.internal.model.Root)
+      RootOrBuilder {
+    private static final long serialVersionUID = 0L;
+
+    // Use Root.newBuilder() to construct.
+    private Root(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+
+    private Root() {
+      int32_ = 0;
+      int64_ = 0L;
+      uint32_ = 0;
+      uint64_ = 0L;
+      sint32_ = 0;
+      sint64_ = 0L;
+      fixed32_ = 0;
+      fixed64_ = 0L;
+      sfixed32_ = 0;
+      sfixed64_ = 0L;
+      floatValue_ = 0F;
+      doubleValue_ = 0D;
+      bool_ = false;
+      string_ = "";
+      bytes_ = com.google.protobuf.ByteString.EMPTY;
+      color_ = 0;
+      sList_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      pList_ = java.util.Collections.emptyList();
+      anys_ = java.util.Collections.emptyList();
+    }
+
+    @Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+
+    private Root(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new NullPointerException();
+      }
+      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;
+            case 8: {
+
+              int32_ = input.readInt32();
+              break;
+            }
+            case 16: {
+
+              int64_ = input.readInt64();
+              break;
+            }
+            case 24: {
+
+              uint32_ = input.readUInt32();
+              break;
+            }
+            case 32: {
+
+              uint64_ = input.readUInt64();
+              break;
+            }
+            case 40: {
+
+              sint32_ = input.readSInt32();
+              break;
+            }
+            case 48: {
+
+              sint64_ = input.readSInt64();
+              break;
+            }
+            case 61: {
+
+              fixed32_ = input.readFixed32();
+              break;
+            }
+            case 65: {
+
+              fixed64_ = input.readFixed64();
+              break;
+            }
+            case 77: {
+
+              sfixed32_ = input.readSFixed32();
+              break;
+            }
+            case 81: {
+
+              sfixed64_ = input.readSFixed64();
+              break;
+            }
+            case 93: {
+
+              floatValue_ = input.readFloat();
+              break;
+            }
+            case 97: {
+
+              doubleValue_ = input.readDouble();
+              break;
+            }
+            case 104: {
+
+              bool_ = input.readBool();
+              break;
+            }
+            case 114: {
+              String s = input.readStringRequireUtf8();
+
+              string_ = s;
+              break;
+            }
+            case 122: {
+
+              bytes_ = input.readBytes();
+              break;
+            }
+            case 128: {
+              int rawValue = input.readEnum();
+
+              color_ = rawValue;
+              break;
+            }
+            case 138: {
+              User.Builder subBuilder = null;
+              if (user_ != null) {
+                subBuilder = user_.toBuilder();
+              }
+              user_ = input.readMessage(User.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(user_);
+                user_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 146: {
+              if (!((mutable_bitField0_ & 0x00020000) == 0x00020000)) {
+                ssMap_ = com.google.protobuf.MapField.newMapField(
+                    SsMapDefaultEntryHolder.defaultEntry);
+                mutable_bitField0_ |= 0x00020000;
+              }
+              com.google.protobuf.MapEntry<String, String>
+                  ssMap__ = input.readMessage(
+                  SsMapDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
+              ssMap_.getMutableMap().put(
+                  ssMap__.getKey(), ssMap__.getValue());
+              break;
+            }
+            case 154: {
+              if (!((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
+                spMap_ = com.google.protobuf.MapField.newMapField(
+                    SpMapDefaultEntryHolder.defaultEntry);
+                mutable_bitField0_ |= 0x00040000;
+              }
+              com.google.protobuf.MapEntry<String, User>
+                  spMap__ = input.readMessage(
+                  SpMapDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
+              spMap_.getMutableMap().put(
+                  spMap__.getKey(), spMap__.getValue());
+              break;
+            }
+            case 162: {
+              String s = input.readStringRequireUtf8();
+              if (!((mutable_bitField0_ & 0x00080000) == 0x00080000)) {
+                sList_ = new com.google.protobuf.LazyStringArrayList();
+                mutable_bitField0_ |= 0x00080000;
+              }
+              sList_.add(s);
+              break;
+            }
+            case 170: {
+              if (!((mutable_bitField0_ & 0x00100000) == 0x00100000)) {
+                pList_ = new java.util.ArrayList<>();
+                mutable_bitField0_ |= 0x00100000;
+              }
+              pList_.add(
+                  input.readMessage(User.parser(), extensionRegistry));
+              break;
+            }
+            case 178: {
+              com.google.protobuf.Any.Builder subBuilder = null;
+              if (any_ != null) {
+                subBuilder = any_.toBuilder();
+              }
+              any_ = input.readMessage(com.google.protobuf.Any.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(any_);
+                any_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 186: {
+              if (!((mutable_bitField0_ & 0x00400000) == 0x00400000)) {
+                anys_ = new java.util.ArrayList<>();
+                mutable_bitField0_ |= 0x00400000;
+              }
+              anys_.add(
+                  input.readMessage(com.google.protobuf.Any.parser(), extensionRegistry));
+              break;
+            }
+            case 194: {
+              Builder subBuilder = null;
+              if (typeRecursive_ != null) {
+                subBuilder = typeRecursive_.toBuilder();
+              }
+              typeRecursive_ = input.readMessage(Root.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(typeRecursive_);
+                typeRecursive_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            default: {
+              if (!parseUnknownFieldProto3(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00080000) == 0x00080000)) {
+          sList_ = sList_.getUnmodifiableView();
+        }
+        if (((mutable_bitField0_ & 0x00100000) == 0x00100000)) {
+          pList_ = java.util.Collections.unmodifiableList(pList_);
+        }
+        if (((mutable_bitField0_ & 0x00400000) == 0x00400000)) {
+          anys_ = java.util.Collections.unmodifiableList(anys_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+
+    public static final com.google.protobuf.Descriptors.Descriptor
+    getDescriptor() {
+      return ProtobufRoot.internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_descriptor;
+    }
+
+    @SuppressWarnings({"rawtypes"})
+    @Override
+    protected com.google.protobuf.MapField internalGetMapField(
+        int number) {
+      switch (number) {
+        case 18:
+          return internalGetSsMap();
+        case 19:
+          return internalGetSpMap();
+        default:
+          throw new RuntimeException(
+              "Invalid map field number: " + number);
+      }
+    }
+
+    @Override
+    protected FieldAccessorTable
+    internalGetFieldAccessorTable() {
+      return ProtobufRoot.internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              Root.class, Builder.class);
+    }
+
+    private int bitField0_;
+
+    public static final int INT32_FIELD_NUMBER = 1;
+
+    private int int32_;
+
+    /**
+     * <code>int32 int32 = 1;</code>
+     */
+    public int getInt32() {
+      return int32_;
+    }
+
+    public static final int INT64_FIELD_NUMBER = 2;
+
+    private long int64_;
+
+    /**
+     * <code>int64 int64 = 2;</code>
+     */
+    public long getInt64() {
+      return int64_;
+    }
+
+    public static final int UINT32_FIELD_NUMBER = 3;
+
+    private int uint32_;
+
+    /**
+     * <code>uint32 uint32 = 3;</code>
+     */
+    public int getUint32() {
+      return uint32_;
+    }
+
+    public static final int UINT64_FIELD_NUMBER = 4;
+
+    private long uint64_;
+
+    /**
+     * <code>uint64 uint64 = 4;</code>
+     */
+    public long getUint64() {
+      return uint64_;
+    }
+
+    public static final int SINT32_FIELD_NUMBER = 5;
+
+    private int sint32_;
+
+    /**
+     * <code>sint32 sint32 = 5;</code>
+     */
+    public int getSint32() {
+      return sint32_;
+    }
+
+    public static final int SINT64_FIELD_NUMBER = 6;
+
+    private long sint64_;
+
+    /**
+     * <code>sint64 sint64 = 6;</code>
+     */
+    public long getSint64() {
+      return sint64_;
+    }
+
+    public static final int FIXED32_FIELD_NUMBER = 7;
+
+    private int fixed32_;
+
+    /**
+     * <code>fixed32 fixed32 = 7;</code>
+     */
+    public int getFixed32() {
+      return fixed32_;
+    }
+
+    public static final int FIXED64_FIELD_NUMBER = 8;
+
+    private long fixed64_;
+
+    /**
+     * <code>fixed64 fixed64 = 8;</code>
+     */
+    public long getFixed64() {
+      return fixed64_;
+    }
+
+    public static final int SFIXED32_FIELD_NUMBER = 9;
+
+    private int sfixed32_;
+
+    /**
+     * <code>sfixed32 sfixed32 = 9;</code>
+     */
+    public int getSfixed32() {
+      return sfixed32_;
+    }
+
+    public static final int SFIXED64_FIELD_NUMBER = 10;
+
+    private long sfixed64_;
+
+    /**
+     * <code>sfixed64 sfixed64 = 10;</code>
+     */
+    public long getSfixed64() {
+      return sfixed64_;
+    }
+
+    public static final int FLOATVALUE_FIELD_NUMBER = 11;
+
+    private float floatValue_;
+
+    /**
+     * <code>float floatValue = 11;</code>
+     */
+    public float getFloatValue() {
+      return floatValue_;
+    }
+
+    public static final int DOUBLEVALUE_FIELD_NUMBER = 12;
+
+    private double doubleValue_;
+
+    /**
+     * <code>double doubleValue = 12;</code>
+     */
+    public double getDoubleValue() {
+      return doubleValue_;
+    }
+
+    public static final int BOOL_FIELD_NUMBER = 13;
+
+    private boolean bool_;
+
+    /**
+     * <code>bool bool = 13;</code>
+     */
+    public boolean getBool() {
+      return bool_;
+    }
+
+    public static final int STRING_FIELD_NUMBER = 14;
+
+    private volatile Object string_;
+
+    /**
+     * <code>string string = 14;</code>
+     */
+    public String getString() {
+      Object ref = string_;
+      if (ref instanceof String) {
+        return (String) ref;
+      } else {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        String s = bs.toStringUtf8();
+        string_ = s;
+        return s;
+      }
+    }
+
+    /**
+     * <code>string string = 14;</code>
+     */
+    public com.google.protobuf.ByteString
+    getStringBytes() {
+      Object ref = string_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b =
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (String) ref);
+        string_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int BYTES_FIELD_NUMBER = 15;
+
+    private com.google.protobuf.ByteString bytes_;
+
+    /**
+     * <code>bytes bytes = 15;</code>
+     */
+    public com.google.protobuf.ByteString getBytes() {
+      return bytes_;
+    }
+
+    public static final int COLOR_FIELD_NUMBER = 16;
+
+    private int color_;
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Color color = 16;</code>
+     */
+    public int getColorValue() {
+      return color_;
+    }
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Color color = 16;</code>
+     */
+    public Color getColor() {
+      @SuppressWarnings("deprecation")
+      Color result = Color.valueOf(color_);
+      return result == null ? Color.UNRECOGNIZED : result;
+    }
+
+    public static final int USER_FIELD_NUMBER = 17;
+
+    private User user_;
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.User user = 17;</code>
+     */
+    public boolean hasUser() {
+      return user_ != null;
+    }
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.User user = 17;</code>
+     */
+    public User getUser() {
+      return user_ == null ? User.getDefaultInstance() : user_;
+    }
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.User user = 17;</code>
+     */
+    public UserOrBuilder getUserOrBuilder() {
+      return getUser();
+    }
+
+    public static final int SSMAP_FIELD_NUMBER = 18;
+
+    private static final class SsMapDefaultEntryHolder {
+      static final com.google.protobuf.MapEntry<
+          String, String> defaultEntry =
+          com.google.protobuf.MapEntry
+              .<String, String>newDefaultInstance(
+                  ProtobufRoot.internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_SsMapEntry_descriptor,
+                  com.google.protobuf.WireFormat.FieldType.STRING,
+                  "",
+                  com.google.protobuf.WireFormat.FieldType.STRING,
+                  "");
+    }
+
+    private com.google.protobuf.MapField<
+        String, String> ssMap_;
+
+    private com.google.protobuf.MapField<String, String>
+    internalGetSsMap() {
+      if (ssMap_ == null) {
+        return com.google.protobuf.MapField.emptyMapField(
+            SsMapDefaultEntryHolder.defaultEntry);
+      }
+      return ssMap_;
+    }
+
+    public int getSsMapCount() {
+      return internalGetSsMap().getMap().size();
+    }
+
+    /**
+     * <code>map&lt;string, string&gt; ssMap = 18;</code>
+     */
+
+    public boolean containsSsMap(
+        String key) {
+      if (key == null) {
+        throw new NullPointerException();
+      }
+      return internalGetSsMap().getMap().containsKey(key);
+    }
+
+    /**
+     * Use {@link #getSsMapMap()} instead.
+     */
+    @Deprecated
+    public java.util.Map<String, String> getSsMap() {
+      return getSsMapMap();
+    }
+
+    /**
+     * <code>map&lt;string, string&gt; ssMap = 18;</code>
+     */
+
+    public java.util.Map<String, String> getSsMapMap() {
+      return internalGetSsMap().getMap();
+    }
+
+    /**
+     * <code>map&lt;string, string&gt; ssMap = 18;</code>
+     */
+
+    public String getSsMapOrDefault(
+        String key,
+        String defaultValue) {
+      if (key == null) {
+        throw new NullPointerException();
+      }
+      java.util.Map<String, String> map =
+          internalGetSsMap().getMap();
+      return map.containsKey(key) ? map.get(key) : defaultValue;
+    }
+
+    /**
+     * <code>map&lt;string, string&gt; ssMap = 18;</code>
+     */
+
+    public String getSsMapOrThrow(
+        String key) {
+      if (key == null) {
+        throw new NullPointerException();
+      }
+      java.util.Map<String, String> map =
+          internalGetSsMap().getMap();
+      if (!map.containsKey(key)) {
+        throw new IllegalArgumentException();
+      }
+      return map.get(key);
+    }
+
+    public static final int SPMAP_FIELD_NUMBER = 19;
+
+    private static final class SpMapDefaultEntryHolder {
+      static final com.google.protobuf.MapEntry<
+          String, User> defaultEntry =
+          com.google.protobuf.MapEntry
+              .<String, User>newDefaultInstance(
+                  ProtobufRoot.internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_SpMapEntry_descriptor,
+                  com.google.protobuf.WireFormat.FieldType.STRING,
+                  "",
+                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
+                  User.getDefaultInstance());
+    }
+
+    private com.google.protobuf.MapField<
+        String, User> spMap_;
+
+    private com.google.protobuf.MapField<String, User>
+    internalGetSpMap() {
+      if (spMap_ == null) {
+        return com.google.protobuf.MapField.emptyMapField(
+            SpMapDefaultEntryHolder.defaultEntry);
+      }
+      return spMap_;
+    }
+
+    public int getSpMapCount() {
+      return internalGetSpMap().getMap().size();
+    }
+
+    /**
+     * <code>map&lt;string, .org.apache.servicecomb.foundation.protobuf.internal.model.User&gt; spMap = 19;</code>
+     */
+
+    public boolean containsSpMap(
+        String key) {
+      if (key == null) {
+        throw new NullPointerException();
+      }
+      return internalGetSpMap().getMap().containsKey(key);
+    }
+
+    /**
+     * Use {@link #getSpMapMap()} instead.
+     */
+    @Deprecated
+    public java.util.Map<String, User> getSpMap() {
+      return getSpMapMap();
+    }
+
+    /**
+     * <code>map&lt;string, .org.apache.servicecomb.foundation.protobuf.internal.model.User&gt; spMap = 19;</code>
+     */
+
+    public java.util.Map<String, User> getSpMapMap() {
+      return internalGetSpMap().getMap();
+    }
+
+    /**
+     * <code>map&lt;string, .org.apache.servicecomb.foundation.protobuf.internal.model.User&gt; spMap = 19;</code>
+     */
+
+    public User getSpMapOrDefault(
+        String key,
+        User defaultValue) {
+      if (key == null) {
+        throw new NullPointerException();
+      }
+      java.util.Map<String, User> map =
+          internalGetSpMap().getMap();
+      return map.containsKey(key) ? map.get(key) : defaultValue;
+    }
+
+    /**
+     * <code>map&lt;string, .org.apache.servicecomb.foundation.protobuf.internal.model.User&gt; spMap = 19;</code>
+     */
+
+    public User getSpMapOrThrow(
+        String key) {
+      if (key == null) {
+        throw new NullPointerException();
+      }
+      java.util.Map<String, User> map =
+          internalGetSpMap().getMap();
+      if (!map.containsKey(key)) {
+        throw new IllegalArgumentException();
+      }
+      return map.get(key);
+    }
+
+    public static final int SLIST_FIELD_NUMBER = 20;
+
+    private com.google.protobuf.LazyStringList sList_;
+
+    /**
+     * <code>repeated string sList = 20;</code>
+     */
+    public com.google.protobuf.ProtocolStringList
+    getSListList() {
+      return sList_;
+    }
+
+    /**
+     * <code>repeated string sList = 20;</code>
+     */
+    public int getSListCount() {
+      return sList_.size();
+    }
+
+    /**
+     * <code>repeated string sList = 20;</code>
+     */
+    public String getSList(int index) {
+      return sList_.get(index);
+    }
+
+    /**
+     * <code>repeated string sList = 20;</code>
+     */
+    public com.google.protobuf.ByteString
+    getSListBytes(int index) {
+      return sList_.getByteString(index);
+    }
+
+    public static final int PLIST_FIELD_NUMBER = 21;
+
+    private java.util.List<User> pList_;
+
+    /**
+     * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+     */
+    public java.util.List<User> getPListList() {
+      return pList_;
+    }
+
+    /**
+     * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+     */
+    public java.util.List<? extends UserOrBuilder>
+    getPListOrBuilderList() {
+      return pList_;
+    }
+
+    /**
+     * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+     */
+    public int getPListCount() {
+      return pList_.size();
+    }
+
+    /**
+     * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+     */
+    public User getPList(int index) {
+      return pList_.get(index);
+    }
+
+    /**
+     * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+     */
+    public UserOrBuilder getPListOrBuilder(
+        int index) {
+      return pList_.get(index);
+    }
+
+    public static final int ANY_FIELD_NUMBER = 22;
+
+    private com.google.protobuf.Any any_;
+
+    /**
+     * <code>.google.protobuf.Any any = 22;</code>
+     */
+    public boolean hasAny() {
+      return any_ != null;
+    }
+
+    /**
+     * <code>.google.protobuf.Any any = 22;</code>
+     */
+    public com.google.protobuf.Any getAny() {
+      return any_ == null ? com.google.protobuf.Any.getDefaultInstance() : any_;
+    }
+
+    /**
+     * <code>.google.protobuf.Any any = 22;</code>
+     */
+    public com.google.protobuf.AnyOrBuilder getAnyOrBuilder() {
+      return getAny();
+    }
+
+    public static final int ANYS_FIELD_NUMBER = 23;
+
+    private java.util.List<com.google.protobuf.Any> anys_;
+
+    /**
+     * <code>repeated .google.protobuf.Any anys = 23;</code>
+     */
+    public java.util.List<com.google.protobuf.Any> getAnysList() {
+      return anys_;
+    }
+
+    /**
+     * <code>repeated .google.protobuf.Any anys = 23;</code>
+     */
+    public java.util.List<? extends com.google.protobuf.AnyOrBuilder>
+    getAnysOrBuilderList() {
+      return anys_;
+    }
+
+    /**
+     * <code>repeated .google.protobuf.Any anys = 23;</code>
+     */
+    public int getAnysCount() {
+      return anys_.size();
+    }
+
+    /**
+     * <code>repeated .google.protobuf.Any anys = 23;</code>
+     */
+    public com.google.protobuf.Any getAnys(int index) {
+      return anys_.get(index);
+    }
+
+    /**
+     * <code>repeated .google.protobuf.Any anys = 23;</code>
+     */
+    public com.google.protobuf.AnyOrBuilder getAnysOrBuilder(
+        int index) {
+      return anys_.get(index);
+    }
+
+    public static final int TYPERECURSIVE_FIELD_NUMBER = 24;
+
+    private Root typeRecursive_;
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 24;</code>
+     */
+    public boolean hasTypeRecursive() {
+      return typeRecursive_ != null;
+    }
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 24;</code>
+     */
+    public Root getTypeRecursive() {
+      return typeRecursive_ == null ? Root.getDefaultInstance() : typeRecursive_;
+    }
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 24;</code>
+     */
+    public RootOrBuilder getTypeRecursiveOrBuilder() {
+      return getTypeRecursive();
+    }
+
+    private byte memoizedIsInitialized = -1;
+
+    @Override
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) {
+        return true;
+      }
+      if (isInitialized == 0) {
+        return false;
+      }
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    @Override
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+        throws java.io.IOException {
+      if (int32_ != 0) {
+        output.writeInt32(1, int32_);
+      }
+      if (int64_ != 0L) {
+        output.writeInt64(2, int64_);
+      }
+      if (uint32_ != 0) {
+        output.writeUInt32(3, uint32_);
+      }
+      if (uint64_ != 0L) {
+        output.writeUInt64(4, uint64_);
+      }
+      if (sint32_ != 0) {
+        output.writeSInt32(5, sint32_);
+      }
+      if (sint64_ != 0L) {
+        output.writeSInt64(6, sint64_);
+      }
+      if (fixed32_ != 0) {
+        output.writeFixed32(7, fixed32_);
+      }
+      if (fixed64_ != 0L) {
+        output.writeFixed64(8, fixed64_);
+      }
+      if (sfixed32_ != 0) {
+        output.writeSFixed32(9, sfixed32_);
+      }
+      if (sfixed64_ != 0L) {
+        output.writeSFixed64(10, sfixed64_);
+      }
+      if (floatValue_ != 0F) {
+        output.writeFloat(11, floatValue_);
+      }
+      if (doubleValue_ != 0D) {
+        output.writeDouble(12, doubleValue_);
+      }
+      if (bool_ != false) {
+        output.writeBool(13, bool_);
+      }
+      if (!getStringBytes().isEmpty()) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 14, string_);
+      }
+      if (!bytes_.isEmpty()) {
+        output.writeBytes(15, bytes_);
+      }
+      if (color_ != Color.RED.getNumber()) {
+        output.writeEnum(16, color_);
+      }
+      if (user_ != null) {
+        output.writeMessage(17, getUser());
+      }
+      com.google.protobuf.GeneratedMessageV3
+          .serializeStringMapTo(
+              output,
+              internalGetSsMap(),
+              SsMapDefaultEntryHolder.defaultEntry,
+              18);
+      com.google.protobuf.GeneratedMessageV3
+          .serializeStringMapTo(
+              output,
+              internalGetSpMap(),
+              SpMapDefaultEntryHolder.defaultEntry,
+              19);
+      for (int i = 0; i < sList_.size(); i++) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 20, sList_.getRaw(i));
+      }
+      for (int i = 0; i < pList_.size(); i++) {
+        output.writeMessage(21, pList_.get(i));
+      }
+      if (any_ != null) {
+        output.writeMessage(22, getAny());
+      }
+      for (int i = 0; i < anys_.size(); i++) {
+        output.writeMessage(23, anys_.get(i));
+      }
+      if (typeRecursive_ != null) {
+        output.writeMessage(24, getTypeRecursive());
+      }
+      unknownFields.writeTo(output);
+    }
+
+    @Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) {
+        return size;
+      }
+
+      size = 0;
+      if (int32_ != 0) {
+        size += com.google.protobuf.CodedOutputStream
+            .computeInt32Size(1, int32_);
+      }
+      if (int64_ != 0L) {
+        size += com.google.protobuf.CodedOutputStream
+            .computeInt64Size(2, int64_);
+      }
+      if (uint32_ != 0) {
+        size += com.google.protobuf.CodedOutputStream
+            .computeUInt32Size(3, uint32_);
+      }
+      if (uint64_ != 0L) {
+        size += com.google.protobuf.CodedOutputStream
+            .computeUInt64Size(4, uint64_);
+      }
+      if (sint32_ != 0) {
+        size += com.google.protobuf.CodedOutputStream
+            .computeSInt32Size(5, sint32_);
+      }
+      if (sint64_ != 0L) {
+        size += com.google.protobuf.CodedOutputStream
+            .computeSInt64Size(6, sint64_);
+      }
+      if (fixed32_ != 0) {
+        size += com.google.protobuf.CodedOutputStream
+            .computeFixed32Size(7, fixed32_);
+      }
+      if (fixed64_ != 0L) {
+        size += com.google.protobuf.CodedOutputStream
+            .computeFixed64Size(8, fixed64_);
+      }
+      if (sfixed32_ != 0) {
+        size += com.google.protobuf.CodedOutputStream
+            .computeSFixed32Size(9, sfixed32_);
+      }
+      if (sfixed64_ != 0L) {
+        size += com.google.protobuf.CodedOutputStream
+            .computeSFixed64Size(10, sfixed64_);
+      }
+      if (floatValue_ != 0F) {
+        size += com.google.protobuf.CodedOutputStream
+            .computeFloatSize(11, floatValue_);
+      }
+      if (doubleValue_ != 0D) {
+        size += com.google.protobuf.CodedOutputStream
+            .computeDoubleSize(12, doubleValue_);
+      }
+      if (bool_ != false) {
+        size += com.google.protobuf.CodedOutputStream
+            .computeBoolSize(13, bool_);
+      }
+      if (!getStringBytes().isEmpty()) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(14, string_);
+      }
+      if (!bytes_.isEmpty()) {
+        size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(15, bytes_);
+      }
+      if (color_ != Color.RED.getNumber()) {
+        size += com.google.protobuf.CodedOutputStream
+            .computeEnumSize(16, color_);
+      }
+      if (user_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(17, getUser());
+      }
+      for (java.util.Map.Entry<String, String> entry
+          : internalGetSsMap().getMap().entrySet()) {
+        com.google.protobuf.MapEntry<String, String>
+            ssMap__ = SsMapDefaultEntryHolder.defaultEntry.newBuilderForType()
+            .setKey(entry.getKey())
+            .setValue(entry.getValue())
+            .build();
+        size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(18, ssMap__);
+      }
+      for (java.util.Map.Entry<String, User> entry
+          : internalGetSpMap().getMap().entrySet()) {
+        com.google.protobuf.MapEntry<String, User>
+            spMap__ = SpMapDefaultEntryHolder.defaultEntry.newBuilderForType()
+            .setKey(entry.getKey())
+            .setValue(entry.getValue())
+            .build();
+        size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(19, spMap__);
+      }
+      {
+        int dataSize = 0;
+        for (int i = 0; i < sList_.size(); i++) {
+          dataSize += computeStringSizeNoTag(sList_.getRaw(i));
+        }
+        size += dataSize;
+        size += 2 * getSListList().size();
+      }
+      for (int i = 0; i < pList_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(21, pList_.get(i));
+      }
+      if (any_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(22, getAny());
+      }
+      for (int i = 0; i < anys_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(23, anys_.get(i));
+      }
+      if (typeRecursive_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(24, getTypeRecursive());
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @Override
+    public boolean equals(final Object obj) {
+      if (obj == this) {
+        return true;
+      }
+      if (!(obj instanceof Root)) {
+        return super.equals(obj);
+      }
+      Root other = (Root) obj;
+
+      boolean result = true;
+      result = result && (getInt32()
+          == other.getInt32());
+      result = result && (getInt64()
+          == other.getInt64());
+      result = result && (getUint32()
+          == other.getUint32());
+      result = result && (getUint64()
+          == other.getUint64());
+      result = result && (getSint32()
+          == other.getSint32());
+      result = result && (getSint64()
+          == other.getSint64());
+      result = result && (getFixed32()
+          == other.getFixed32());
+      result = result && (getFixed64()
+          == other.getFixed64());
+      result = result && (getSfixed32()
+          == other.getSfixed32());
+      result = result && (getSfixed64()
+          == other.getSfixed64());
+      result = result && (
+          Float.floatToIntBits(getFloatValue())
+              == Float.floatToIntBits(
+              other.getFloatValue()));
+      result = result && (
+          Double.doubleToLongBits(getDoubleValue())
+              == Double.doubleToLongBits(
+              other.getDoubleValue()));
+      result = result && (getBool()
+          == other.getBool());
+      result = result && getString()
+          .equals(other.getString());
+      result = result && getBytes()
+          .equals(other.getBytes());
+      result = result && color_ == other.color_;
+      result = result && (hasUser() == other.hasUser());
+      if (hasUser()) {
+        result = result && getUser()
+            .equals(other.getUser());
+      }
+      result = result && internalGetSsMap().equals(
+          other.internalGetSsMap());
+      result = result && internalGetSpMap().equals(
+          other.internalGetSpMap());
+      result = result && getSListList()
+          .equals(other.getSListList());
+      result = result && getPListList()
+          .equals(other.getPListList());
+      result = result && (hasAny() == other.hasAny());
+      if (hasAny()) {
+        result = result && getAny()
+            .equals(other.getAny());
+      }
+      result = result && getAnysList()
+          .equals(other.getAnysList());
+      result = result && (hasTypeRecursive() == other.hasTypeRecursive());
+      if (hasTypeRecursive()) {
+        result = result && getTypeRecursive()
+            .equals(other.getTypeRecursive());
+      }
+      result = result && unknownFields.equals(other.unknownFields);
+      return result;
+    }
+
+    @Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (37 * hash) + INT32_FIELD_NUMBER;
+      hash = (53 * hash) + getInt32();
+      hash = (37 * hash) + INT64_FIELD_NUMBER;
+      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+          getInt64());
+      hash = (37 * hash) + UINT32_FIELD_NUMBER;
+      hash = (53 * hash) + getUint32();
+      hash = (37 * hash) + UINT64_FIELD_NUMBER;
+      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+          getUint64());
+      hash = (37 * hash) + SINT32_FIELD_NUMBER;
+      hash = (53 * hash) + getSint32();
+      hash = (37 * hash) + SINT64_FIELD_NUMBER;
+      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+          getSint64());
+      hash = (37 * hash) + FIXED32_FIELD_NUMBER;
+      hash = (53 * hash) + getFixed32();
+      hash = (37 * hash) + FIXED64_FIELD_NUMBER;
+      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+          getFixed64());
+      hash = (37 * hash) + SFIXED32_FIELD_NUMBER;
+      hash = (53 * hash) + getSfixed32();
+      hash = (37 * hash) + SFIXED64_FIELD_NUMBER;
+      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+          getSfixed64());
+      hash = (37 * hash) + FLOATVALUE_FIELD_NUMBER;
+      hash = (53 * hash) + Float.floatToIntBits(
+          getFloatValue());
+      hash = (37 * hash) + DOUBLEVALUE_FIELD_NUMBER;
+      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+          Double.doubleToLongBits(getDoubleValue()));
+      hash = (37 * hash) + BOOL_FIELD_NUMBER;
+      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+          getBool());
+      hash = (37 * hash) + STRING_FIELD_NUMBER;
+      hash = (53 * hash) + getString().hashCode();
+      hash = (37 * hash) + BYTES_FIELD_NUMBER;
+      hash = (53 * hash) + getBytes().hashCode();
+      hash = (37 * hash) + COLOR_FIELD_NUMBER;
+      hash = (53 * hash) + color_;
+      if (hasUser()) {
+        hash = (37 * hash) + USER_FIELD_NUMBER;
+        hash = (53 * hash) + getUser().hashCode();
+      }
+      if (!internalGetSsMap().getMap().isEmpty()) {
+        hash = (37 * hash) + SSMAP_FIELD_NUMBER;
+        hash = (53 * hash) + internalGetSsMap().hashCode();
+      }
+      if (!internalGetSpMap().getMap().isEmpty()) {
+        hash = (37 * hash) + SPMAP_FIELD_NUMBER;
+        hash = (53 * hash) + internalGetSpMap().hashCode();
+      }
+      if (getSListCount() > 0) {
+        hash = (37 * hash) + SLIST_FIELD_NUMBER;
+        hash = (53 * hash) + getSListList().hashCode();
+      }
+      if (getPListCount() > 0) {
+        hash = (37 * hash) + PLIST_FIELD_NUMBER;
+        hash = (53 * hash) + getPListList().hashCode();
+      }
+      if (hasAny()) {
+        hash = (37 * hash) + ANY_FIELD_NUMBER;
+        hash = (53 * hash) + getAny().hashCode();
+      }
+      if (getAnysCount() > 0) {
+        hash = (37 * hash) + ANYS_FIELD_NUMBER;
+        hash = (53 * hash) + getAnysList().hashCode();
+      }
+      if (hasTypeRecursive()) {
+        hash = (37 * hash) + TYPERECURSIVE_FIELD_NUMBER;
+        hash = (53 * hash) + getTypeRecursive().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static Root parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+
+    public static Root parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+
+    public static Root parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+
+    public static Root parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+
+    public static Root parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+
+    public static Root parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+
+    public static Root parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+
+    public static Root parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public static Root parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+
+    public static Root parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public static Root parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+
+    public static Root parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    @Override
+    public Builder newBuilderForType() {
+      return newBuilder();
+    }
+
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+
+    public static Builder newBuilder(Root prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+
+    @Override
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @Override
+    protected Builder newBuilderForType(
+        BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+
+    /**
+     * Protobuf type {@code org.apache.servicecomb.foundation.protobuf.internal.model.Root}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:org.apache.servicecomb.foundation.protobuf.internal.model.Root)
+        RootOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+      getDescriptor() {
+        return ProtobufRoot.internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_descriptor;
+      }
+
+      @SuppressWarnings({"rawtypes"})
+      protected com.google.protobuf.MapField internalGetMapField(
+          int number) {
+        switch (number) {
+          case 18:
+            return internalGetSsMap();
+          case 19:
+            return internalGetSpMap();
+          default:
+            throw new RuntimeException(
+                "Invalid map field number: " + number);
+        }
+      }
+
+      @SuppressWarnings({"rawtypes"})
+      protected com.google.protobuf.MapField internalGetMutableMapField(
+          int number) {
+        switch (number) {
+          case 18:
+            return internalGetMutableSsMap();
+          case 19:
+            return internalGetMutableSpMap();
+          default:
+            throw new RuntimeException(
+                "Invalid map field number: " + number);
+        }
+      }
+
+      @Override
+      protected FieldAccessorTable
+      internalGetFieldAccessorTable() {
+        return ProtobufRoot.internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                Root.class, Builder.class);
+      }
+
+      // Construct using org.apache.servicecomb.foundation.protobuf.internal.model.ProtobufRoot.Root.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+            .alwaysUseFieldBuilders) {
+          getPListFieldBuilder();
+          getAnysFieldBuilder();
+        }
+      }
+
+      @Override
+      public Builder clear() {
+        super.clear();
+        int32_ = 0;
+
+        int64_ = 0L;
+
+        uint32_ = 0;
+
+        uint64_ = 0L;
+
+        sint32_ = 0;
+
+        sint64_ = 0L;
+
+        fixed32_ = 0;
+
+        fixed64_ = 0L;
+
+        sfixed32_ = 0;
+
+        sfixed64_ = 0L;
+
+        floatValue_ = 0F;
+
+        doubleValue_ = 0D;
+
+        bool_ = false;
+
+        string_ = "";
+
+        bytes_ = com.google.protobuf.ByteString.EMPTY;
+
+        color_ = 0;
+
+        if (userBuilder_ == null) {
+          user_ = null;
+        } else {
+          user_ = null;
+          userBuilder_ = null;
+        }
+        internalGetMutableSsMap().clear();
+        internalGetMutableSpMap().clear();
+        sList_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00080000);
+        if (pListBuilder_ == null) {
+          pList_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00100000);
+        } else {
+          pListBuilder_.clear();
+        }
+        if (anyBuilder_ == null) {
+          any_ = null;
+        } else {
+          any_ = null;
+          anyBuilder_ = null;
+        }
+        if (anysBuilder_ == null) {
+          anys_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00400000);
+        } else {
+          anysBuilder_.clear();
+        }
+        if (typeRecursiveBuilder_ == null) {
+          typeRecursive_ = null;
+        } else {
+          typeRecursive_ = null;
+          typeRecursiveBuilder_ = null;
+        }
+        return this;
+      }
+
+      @Override
+      public com.google.protobuf.Descriptors.Descriptor
+      getDescriptorForType() {
+        return ProtobufRoot.internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_descriptor;
+      }
+
+      @Override
+      public Root getDefaultInstanceForType() {
+        return Root.getDefaultInstance();
+      }
+
+      @Override
+      public Root build() {
+        Root result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @Override
+      public Root buildPartial() {
+        Root result = new Root(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        result.int32_ = int32_;
+        result.int64_ = int64_;
+        result.uint32_ = uint32_;
+        result.uint64_ = uint64_;
+        result.sint32_ = sint32_;
+        result.sint64_ = sint64_;
+        result.fixed32_ = fixed32_;
+        result.fixed64_ = fixed64_;
+        result.sfixed32_ = sfixed32_;
+        result.sfixed64_ = sfixed64_;
+        result.floatValue_ = floatValue_;
+        result.doubleValue_ = doubleValue_;
+        result.bool_ = bool_;
+        result.string_ = string_;
+        result.bytes_ = bytes_;
+        result.color_ = color_;
+        if (userBuilder_ == null) {
+          result.user_ = user_;
+        } else {
+          result.user_ = userBuilder_.build();
+        }
+        result.ssMap_ = internalGetSsMap();
+        result.ssMap_.makeImmutable();
+        result.spMap_ = internalGetSpMap();
+        result.spMap_.makeImmutable();
+        if (((bitField0_ & 0x00080000) == 0x00080000)) {
+          sList_ = sList_.getUnmodifiableView();
+          bitField0_ = (bitField0_ & ~0x00080000);
+        }
+        result.sList_ = sList_;
+        if (pListBuilder_ == null) {
+          if (((bitField0_ & 0x00100000) == 0x00100000)) {
+            pList_ = java.util.Collections.unmodifiableList(pList_);
+            bitField0_ = (bitField0_ & ~0x00100000);
+          }
+          result.pList_ = pList_;
+        } else {
+          result.pList_ = pListBuilder_.build();
+        }
+        if (anyBuilder_ == null) {
+          result.any_ = any_;
+        } else {
+          result.any_ = anyBuilder_.build();
+        }
+        if (anysBuilder_ == null) {
+          if (((bitField0_ & 0x00400000) == 0x00400000)) {
+            anys_ = java.util.Collections.unmodifiableList(anys_);
+            bitField0_ = (bitField0_ & ~0x00400000);
+          }
+          result.anys_ = anys_;
+        } else {
+          result.anys_ = anysBuilder_.build();
+        }
+        if (typeRecursiveBuilder_ == null) {
+          result.typeRecursive_ = typeRecursive_;
+        } else {
+          result.typeRecursive_ = typeRecursiveBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      @Override
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+
+      @Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          Object value) {
+        return (Builder) super.setField(field, value);
+      }
+
+      @Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+
+      @Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+
+      @Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+
+      @Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+
+      @Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof Root) {
+          return mergeFrom((Root) other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(Root other) {
+        if (other == Root.getDefaultInstance()) {
+          return this;
+        }
+        if (other.getInt32() != 0) {
+          setInt32(other.getInt32());
+        }
+        if (other.getInt64() != 0L) {
+          setInt64(other.getInt64());
+        }
+        if (other.getUint32() != 0) {
+          setUint32(other.getUint32());
+        }
+        if (other.getUint64() != 0L) {
+          setUint64(other.getUint64());
+        }
+        if (other.getSint32() != 0) {
+          setSint32(other.getSint32());
+        }
+        if (other.getSint64() != 0L) {
+          setSint64(other.getSint64());
+        }
+        if (other.getFixed32() != 0) {
+          setFixed32(other.getFixed32());
+        }
+        if (other.getFixed64() != 0L) {
+          setFixed64(other.getFixed64());
+        }
+        if (other.getSfixed32() != 0) {
+          setSfixed32(other.getSfixed32());
+        }
+        if (other.getSfixed64() != 0L) {
+          setSfixed64(other.getSfixed64());
+        }
+        if (other.getFloatValue() != 0F) {
+          setFloatValue(other.getFloatValue());
+        }
+        if (other.getDoubleValue() != 0D) {
+          setDoubleValue(other.getDoubleValue());
+        }
+        if (other.getBool() != false) {
+          setBool(other.getBool());
+        }
+        if (!other.getString().isEmpty()) {
+          string_ = other.string_;
+          onChanged();
+        }
+        if (other.getBytes() != com.google.protobuf.ByteString.EMPTY) {
+          setBytes(other.getBytes());
+        }
+        if (other.color_ != 0) {
+          setColorValue(other.getColorValue());
+        }
+        if (other.hasUser()) {
+          mergeUser(other.getUser());
+        }
+        internalGetMutableSsMap().mergeFrom(
+            other.internalGetSsMap());
+        internalGetMutableSpMap().mergeFrom(
+            other.internalGetSpMap());
+        if (!other.sList_.isEmpty()) {
+          if (sList_.isEmpty()) {
+            sList_ = other.sList_;
+            bitField0_ = (bitField0_ & ~0x00080000);
+          } else {
+            ensureSListIsMutable();
+            sList_.addAll(other.sList_);
+          }
+          onChanged();
+        }
+        if (pListBuilder_ == null) {
+          if (!other.pList_.isEmpty()) {
+            if (pList_.isEmpty()) {
+              pList_ = other.pList_;
+              bitField0_ = (bitField0_ & ~0x00100000);
+            } else {
+              ensurePListIsMutable();
+              pList_.addAll(other.pList_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.pList_.isEmpty()) {
+            if (pListBuilder_.isEmpty()) {
+              pListBuilder_.dispose();
+              pListBuilder_ = null;
+              pList_ = other.pList_;
+              bitField0_ = (bitField0_ & ~0x00100000);
+              pListBuilder_ =
+                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+                      getPListFieldBuilder() : null;
+            } else {
+              pListBuilder_.addAllMessages(other.pList_);
+            }
+          }
+        }
+        if (other.hasAny()) {
+          mergeAny(other.getAny());
+        }
+        if (anysBuilder_ == null) {
+          if (!other.anys_.isEmpty()) {
+            if (anys_.isEmpty()) {
+              anys_ = other.anys_;
+              bitField0_ = (bitField0_ & ~0x00400000);
+            } else {
+              ensureAnysIsMutable();
+              anys_.addAll(other.anys_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.anys_.isEmpty()) {
+            if (anysBuilder_.isEmpty()) {
+              anysBuilder_.dispose();
+              anysBuilder_ = null;
+              anys_ = other.anys_;
+              bitField0_ = (bitField0_ & ~0x00400000);
+              anysBuilder_ =
+                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+                      getAnysFieldBuilder() : null;
+            } else {
+              anysBuilder_.addAllMessages(other.anys_);
+            }
+          }
+        }
+        if (other.hasTypeRecursive()) {
+          mergeTypeRecursive(other.getTypeRecursive());
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      @Override
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      @Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        Root parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (Root) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+
+      private int bitField0_;
+
+      private int int32_;
+
+      /**
+       * <code>int32 int32 = 1;</code>
+       */
+      public int getInt32() {
+        return int32_;
+      }
+
+      /**
+       * <code>int32 int32 = 1;</code>
+       */
+      public Builder setInt32(int value) {
+
+        int32_ = value;
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>int32 int32 = 1;</code>
+       */
+      public Builder clearInt32() {
+
+        int32_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private long int64_;
+
+      /**
+       * <code>int64 int64 = 2;</code>
+       */
+      public long getInt64() {
+        return int64_;
+      }
+
+      /**
+       * <code>int64 int64 = 2;</code>
+       */
+      public Builder setInt64(long value) {
+
+        int64_ = value;
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>int64 int64 = 2;</code>
+       */
+      public Builder clearInt64() {
+
+        int64_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private int uint32_;
+
+      /**
+       * <code>uint32 uint32 = 3;</code>
+       */
+      public int getUint32() {
+        return uint32_;
+      }
+
+      /**
+       * <code>uint32 uint32 = 3;</code>
+       */
+      public Builder setUint32(int value) {
+
+        uint32_ = value;
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>uint32 uint32 = 3;</code>
+       */
+      public Builder clearUint32() {
+
+        uint32_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private long uint64_;
+
+      /**
+       * <code>uint64 uint64 = 4;</code>
+       */
+      public long getUint64() {
+        return uint64_;
+      }
+
+      /**
+       * <code>uint64 uint64 = 4;</code>
+       */
+      public Builder setUint64(long value) {
+
+        uint64_ = value;
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>uint64 uint64 = 4;</code>
+       */
+      public Builder clearUint64() {
+
+        uint64_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private int sint32_;
+
+      /**
+       * <code>sint32 sint32 = 5;</code>
+       */
+      public int getSint32() {
+        return sint32_;
+      }
+
+      /**
+       * <code>sint32 sint32 = 5;</code>
+       */
+      public Builder setSint32(int value) {
+
+        sint32_ = value;
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>sint32 sint32 = 5;</code>
+       */
+      public Builder clearSint32() {
+
+        sint32_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private long sint64_;
+
+      /**
+       * <code>sint64 sint64 = 6;</code>
+       */
+      public long getSint64() {
+        return sint64_;
+      }
+
+      /**
+       * <code>sint64 sint64 = 6;</code>
+       */
+      public Builder setSint64(long value) {
+
+        sint64_ = value;
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>sint64 sint64 = 6;</code>
+       */
+      public Builder clearSint64() {
+
+        sint64_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private int fixed32_;
+
+      /**
+       * <code>fixed32 fixed32 = 7;</code>
+       */
+      public int getFixed32() {
+        return fixed32_;
+      }
+
+      /**
+       * <code>fixed32 fixed32 = 7;</code>
+       */
+      public Builder setFixed32(int value) {
+
+        fixed32_ = value;
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>fixed32 fixed32 = 7;</code>
+       */
+      public Builder clearFixed32() {
+
+        fixed32_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private long fixed64_;
+
+      /**
+       * <code>fixed64 fixed64 = 8;</code>
+       */
+      public long getFixed64() {
+        return fixed64_;
+      }
+
+      /**
+       * <code>fixed64 fixed64 = 8;</code>
+       */
+      public Builder setFixed64(long value) {
+
+        fixed64_ = value;
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>fixed64 fixed64 = 8;</code>
+       */
+      public Builder clearFixed64() {
+
+        fixed64_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private int sfixed32_;
+
+      /**
+       * <code>sfixed32 sfixed32 = 9;</code>
+       */
+      public int getSfixed32() {
+        return sfixed32_;
+      }
+
+      /**
+       * <code>sfixed32 sfixed32 = 9;</code>
+       */
+      public Builder setSfixed32(int value) {
+
+        sfixed32_ = value;
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>sfixed32 sfixed32 = 9;</code>
+       */
+      public Builder clearSfixed32() {
+
+        sfixed32_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private long sfixed64_;
+
+      /**
+       * <code>sfixed64 sfixed64 = 10;</code>
+       */
+      public long getSfixed64() {
+        return sfixed64_;
+      }
+
+      /**
+       * <code>sfixed64 sfixed64 = 10;</code>
+       */
+      public Builder setSfixed64(long value) {
+
+        sfixed64_ = value;
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>sfixed64 sfixed64 = 10;</code>
+       */
+      public Builder clearSfixed64() {
+
+        sfixed64_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private float floatValue_;
+
+      /**
+       * <code>float floatValue = 11;</code>
+       */
+      public float getFloatValue() {
+        return floatValue_;
+      }
+
+      /**
+       * <code>float floatValue = 11;</code>
+       */
+      public Builder setFloatValue(float value) {
+
+        floatValue_ = value;
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>float floatValue = 11;</code>
+       */
+      public Builder clearFloatValue() {
+
+        floatValue_ = 0F;
+        onChanged();
+        return this;
+      }
+
+      private double doubleValue_;
+
+      /**
+       * <code>double doubleValue = 12;</code>
+       */
+      public double getDoubleValue() {
+        return doubleValue_;
+      }
+
+      /**
+       * <code>double doubleValue = 12;</code>
+       */
+      public Builder setDoubleValue(double value) {
+
+        doubleValue_ = value;
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>double doubleValue = 12;</code>
+       */
+      public Builder clearDoubleValue() {
+
+        doubleValue_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      private boolean bool_;
+
+      /**
+       * <code>bool bool = 13;</code>
+       */
+      public boolean getBool() {
+        return bool_;
+      }
+
+      /**
+       * <code>bool bool = 13;</code>
+       */
+      public Builder setBool(boolean value) {
+
+        bool_ = value;
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>bool bool = 13;</code>
+       */
+      public Builder clearBool() {
+
+        bool_ = false;
+        onChanged();
+        return this;
+      }
+
+      private Object string_ = "";
+
+      /**
+       * <code>string string = 14;</code>
+       */
+      public String getString() {
+        Object ref = string_;
+        if (!(ref instanceof String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          String s = bs.toStringUtf8();
+          string_ = s;
+          return s;
+        } else {
+          return (String) ref;
+        }
+      }
+
+      /**
+       * <code>string string = 14;</code>
+       */
+      public com.google.protobuf.ByteString
+      getStringBytes() {
+        Object ref = string_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b =
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (String) ref);
+          string_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      /**
+       * <code>string string = 14;</code>
+       */
+      public Builder setString(
+          String value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+
+        string_ = value;
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>string string = 14;</code>
+       */
+      public Builder clearString() {
+
+        string_ = getDefaultInstance().getString();
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>string string = 14;</code>
+       */
+      public Builder setStringBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        checkByteStringIsUtf8(value);
+
+        string_ = value;
+        onChanged();
+        return this;
+      }
+
+      private com.google.protobuf.ByteString bytes_ = com.google.protobuf.ByteString.EMPTY;
+
+      /**
+       * <code>bytes bytes = 15;</code>
+       */
+      public com.google.protobuf.ByteString getBytes() {
+        return bytes_;
+      }
+
+      /**
+       * <code>bytes bytes = 15;</code>
+       */
+      public Builder setBytes(com.google.protobuf.ByteString value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+
+        bytes_ = value;
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>bytes bytes = 15;</code>
+       */
+      public Builder clearBytes() {
+
+        bytes_ = getDefaultInstance().getBytes();
+        onChanged();
+        return this;
+      }
+
+      private int color_ = 0;
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Color color = 16;</code>
+       */
+      public int getColorValue() {
+        return color_;
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Color color = 16;</code>
+       */
+      public Builder setColorValue(int value) {
+        color_ = value;
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Color color = 16;</code>
+       */
+      public Color getColor() {
+        @SuppressWarnings("deprecation")
+        Color result = Color.valueOf(color_);
+        return result == null ? Color.UNRECOGNIZED : result;
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Color color = 16;</code>
+       */
+      public Builder setColor(Color value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+
+        color_ = value.getNumber();
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Color color = 16;</code>
+       */
+      public Builder clearColor() {
+
+        color_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private User user_ = null;
+
+      private com.google.protobuf.SingleFieldBuilderV3<
+          User, User.Builder, UserOrBuilder> userBuilder_;
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.User user = 17;</code>
+       */
+      public boolean hasUser() {
+        return userBuilder_ != null || user_ != null;
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.User user = 17;</code>
+       */
+      public User getUser() {
+        if (userBuilder_ == null) {
+          return user_ == null ? User.getDefaultInstance() : user_;
+        } else {
+          return userBuilder_.getMessage();
+        }
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.User user = 17;</code>
+       */
+      public Builder setUser(User value) {
+        if (userBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          user_ = value;
+          onChanged();
+        } else {
+          userBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.User user = 17;</code>
+       */
+      public Builder setUser(
+          User.Builder builderForValue) {
+        if (userBuilder_ == null) {
+          user_ = builderForValue.build();
+          onChanged();
+        } else {
+          userBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.User user = 17;</code>
+       */
+      public Builder mergeUser(User value) {
+        if (userBuilder_ == null) {
+          if (user_ != null) {
+            user_ =
+                User.newBuilder(user_).mergeFrom(value).buildPartial();
+          } else {
+            user_ = value;
+          }
+          onChanged();
+        } else {
+          userBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.User user = 17;</code>
+       */
+      public Builder clearUser() {
+        if (userBuilder_ == null) {
+          user_ = null;
+          onChanged();
+        } else {
+          user_ = null;
+          userBuilder_ = null;
+        }
+
+        return this;
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.User user = 17;</code>
+       */
+      public User.Builder getUserBuilder() {
+
+        onChanged();
+        return getUserFieldBuilder().getBuilder();
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.User user = 17;</code>
+       */
+      public UserOrBuilder getUserOrBuilder() {
+        if (userBuilder_ != null) {
+          return userBuilder_.getMessageOrBuilder();
+        } else {
+          return user_ == null ?
+              User.getDefaultInstance() : user_;
+        }
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.User user = 17;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          User, User.Builder, UserOrBuilder>
+      getUserFieldBuilder() {
+        if (userBuilder_ == null) {
+          userBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<>(
+              getUser(),
+              getParentForChildren(),
+              isClean());
+          user_ = null;
+        }
+        return userBuilder_;
+      }
+
+      private com.google.protobuf.MapField<
+          String, String> ssMap_;
+
+      private com.google.protobuf.MapField<String, String>
+      internalGetSsMap() {
+        if (ssMap_ == null) {
+          return com.google.protobuf.MapField.emptyMapField(
+              SsMapDefaultEntryHolder.defaultEntry);
+        }
+        return ssMap_;
+      }
+
+      private com.google.protobuf.MapField<String, String>
+      internalGetMutableSsMap() {
+        onChanged();
+        if (ssMap_ == null) {
+          ssMap_ = com.google.protobuf.MapField.newMapField(
+              SsMapDefaultEntryHolder.defaultEntry);
+        }
+        if (!ssMap_.isMutable()) {
+          ssMap_ = ssMap_.copy();
+        }
+        return ssMap_;
+      }
+
+      public int getSsMapCount() {
+        return internalGetSsMap().getMap().size();
+      }
+
+      /**
+       * <code>map&lt;string, string&gt; ssMap = 18;</code>
+       */
+
+      public boolean containsSsMap(
+          String key) {
+        if (key == null) {
+          throw new NullPointerException();
+        }
+        return internalGetSsMap().getMap().containsKey(key);
+      }
+
+      /**
+       * Use {@link #getSsMapMap()} instead.
+       */
+      @Deprecated
+      public java.util.Map<String, String> getSsMap() {
+        return getSsMapMap();
+      }
+
+      /**
+       * <code>map&lt;string, string&gt; ssMap = 18;</code>
+       */
+
+      public java.util.Map<String, String> getSsMapMap() {
+        return internalGetSsMap().getMap();
+      }
+
+      /**
+       * <code>map&lt;string, string&gt; ssMap = 18;</code>
+       */
+
+      public String getSsMapOrDefault(
+          String key,
+          String defaultValue) {
+        if (key == null) {
+          throw new NullPointerException();
+        }
+        java.util.Map<String, String> map =
+            internalGetSsMap().getMap();
+        return map.containsKey(key) ? map.get(key) : defaultValue;
+      }
+
+      /**
+       * <code>map&lt;string, string&gt; ssMap = 18;</code>
+       */
+
+      public String getSsMapOrThrow(
+          String key) {
+        if (key == null) {
+          throw new NullPointerException();
+        }
+        java.util.Map<String, String> map =
+            internalGetSsMap().getMap();
+        if (!map.containsKey(key)) {
+          throw new IllegalArgumentException();
+        }
+        return map.get(key);
+      }
+
+      public Builder clearSsMap() {
+        internalGetMutableSsMap().getMutableMap()
+            .clear();
+        return this;
+      }
+
+      /**
+       * <code>map&lt;string, string&gt; ssMap = 18;</code>
+       */
+
+      public Builder removeSsMap(
+          String key) {
+        if (key == null) {
+          throw new NullPointerException();
+        }
+        internalGetMutableSsMap().getMutableMap()
+            .remove(key);
+        return this;
+      }
+
+      /**
+       * Use alternate mutation accessors instead.
+       */
+      @Deprecated
+      public java.util.Map<String, String>
+      getMutableSsMap() {
+        return internalGetMutableSsMap().getMutableMap();
+      }
+
+      /**
+       * <code>map&lt;string, string&gt; ssMap = 18;</code>
+       */
+      public Builder putSsMap(
+          String key,
+          String value) {
+        if (key == null) {
+          throw new NullPointerException();
+        }
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        internalGetMutableSsMap().getMutableMap()
+            .put(key, value);
+        return this;
+      }
+
+      /**
+       * <code>map&lt;string, string&gt; ssMap = 18;</code>
+       */
+
+      public Builder putAllSsMap(
+          java.util.Map<String, String> values) {
+        internalGetMutableSsMap().getMutableMap()
+            .putAll(values);
+        return this;
+      }
+
+      private com.google.protobuf.MapField<
+          String, User> spMap_;
+
+      private com.google.protobuf.MapField<String, User>
+      internalGetSpMap() {
+        if (spMap_ == null) {
+          return com.google.protobuf.MapField.emptyMapField(
+              SpMapDefaultEntryHolder.defaultEntry);
+        }
+        return spMap_;
+      }
+
+      private com.google.protobuf.MapField<String, User>
+      internalGetMutableSpMap() {
+        onChanged();
+        if (spMap_ == null) {
+          spMap_ = com.google.protobuf.MapField.newMapField(
+              SpMapDefaultEntryHolder.defaultEntry);
+        }
+        if (!spMap_.isMutable()) {
+          spMap_ = spMap_.copy();
+        }
+        return spMap_;
+      }
+
+      public int getSpMapCount() {
+        return internalGetSpMap().getMap().size();
+      }
+
+      /**
+       * <code>map&lt;string, .org.apache.servicecomb.foundation.protobuf.internal.model.User&gt; spMap = 19;</code>
+       */
+
+      public boolean containsSpMap(
+          String key) {
+        if (key == null) {
+          throw new NullPointerException();
+        }
+        return internalGetSpMap().getMap().containsKey(key);
+      }
+
+      /**
+       * Use {@link #getSpMapMap()} instead.
+       */
+      @Deprecated
+      public java.util.Map<String, User> getSpMap() {
+        return getSpMapMap();
+      }
+
+      /**
+       * <code>map&lt;string, .org.apache.servicecomb.foundation.protobuf.internal.model.User&gt; spMap = 19;</code>
+       */
+
+      public java.util.Map<String, User> getSpMapMap() {
+        return internalGetSpMap().getMap();
+      }
+
+      /**
+       * <code>map&lt;string, .org.apache.servicecomb.foundation.protobuf.internal.model.User&gt; spMap = 19;</code>
+       */
+
+      public User getSpMapOrDefault(
+          String key,
+          User defaultValue) {
+        if (key == null) {
+          throw new NullPointerException();
+        }
+        java.util.Map<String, User> map =
+            internalGetSpMap().getMap();
+        return map.containsKey(key) ? map.get(key) : defaultValue;
+      }
+
+      /**
+       * <code>map&lt;string, .org.apache.servicecomb.foundation.protobuf.internal.model.User&gt; spMap = 19;</code>
+       */
+
+      public User getSpMapOrThrow(
+          String key) {
+        if (key == null) {
+          throw new NullPointerException();
+        }
+        java.util.Map<String, User> map =
+            internalGetSpMap().getMap();
+        if (!map.containsKey(key)) {
+          throw new IllegalArgumentException();
+        }
+        return map.get(key);
+      }
+
+      public Builder clearSpMap() {
+        internalGetMutableSpMap().getMutableMap()
+            .clear();
+        return this;
+      }
+
+      /**
+       * <code>map&lt;string, .org.apache.servicecomb.foundation.protobuf.internal.model.User&gt; spMap = 19;</code>
+       */
+
+      public Builder removeSpMap(
+          String key) {
+        if (key == null) {
+          throw new NullPointerException();
+        }
+        internalGetMutableSpMap().getMutableMap()
+            .remove(key);
+        return this;
+      }
+
+      /**
+       * Use alternate mutation accessors instead.
+       */
+      @Deprecated
+      public java.util.Map<String, User>
+      getMutableSpMap() {
+        return internalGetMutableSpMap().getMutableMap();
+      }
+
+      /**
+       * <code>map&lt;string, .org.apache.servicecomb.foundation.protobuf.internal.model.User&gt; spMap = 19;</code>
+       */
+      public Builder putSpMap(
+          String key,
+          User value) {
+        if (key == null) {
+          throw new NullPointerException();
+        }
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        internalGetMutableSpMap().getMutableMap()
+            .put(key, value);
+        return this;
+      }
+
+      /**
+       * <code>map&lt;string, .org.apache.servicecomb.foundation.protobuf.internal.model.User&gt; spMap = 19;</code>
+       */
+
+      public Builder putAllSpMap(
+          java.util.Map<String, User> values) {
+        internalGetMutableSpMap().getMutableMap()
+            .putAll(values);
+        return this;
+      }
+
+      private com.google.protobuf.LazyStringList sList_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+
+      private void ensureSListIsMutable() {
+        if (!((bitField0_ & 0x00080000) == 0x00080000)) {
+          sList_ = new com.google.protobuf.LazyStringArrayList(sList_);
+          bitField0_ |= 0x00080000;
+        }
+      }
+
+      /**
+       * <code>repeated string sList = 20;</code>
+       */
+      public com.google.protobuf.ProtocolStringList
+      getSListList() {
+        return sList_.getUnmodifiableView();
+      }
+
+      /**
+       * <code>repeated string sList = 20;</code>
+       */
+      public int getSListCount() {
+        return sList_.size();
+      }
+
+      /**
+       * <code>repeated string sList = 20;</code>
+       */
+      public String getSList(int index) {
+        return sList_.get(index);
+      }
+
+      /**
+       * <code>repeated string sList = 20;</code>
+       */
+      public com.google.protobuf.ByteString
+      getSListBytes(int index) {
+        return sList_.getByteString(index);
+      }
+
+      /**
+       * <code>repeated string sList = 20;</code>
+       */
+      public Builder setSList(
+          int index, String value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        ensureSListIsMutable();
+        sList_.set(index, value);
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>repeated string sList = 20;</code>
+       */
+      public Builder addSList(
+          String value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        ensureSListIsMutable();
+        sList_.add(value);
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>repeated string sList = 20;</code>
+       */
+      public Builder addAllSList(
+          Iterable<String> values) {
+        ensureSListIsMutable();
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, sList_);
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>repeated string sList = 20;</code>
+       */
+      public Builder clearSList() {
+        sList_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00080000);
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>repeated string sList = 20;</code>
+       */
+      public Builder addSListBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        checkByteStringIsUtf8(value);
+        ensureSListIsMutable();
+        sList_.add(value);
+        onChanged();
+        return this;
+      }
+
+      private java.util.List<User> pList_ =
+          java.util.Collections.emptyList();
+
+      private void ensurePListIsMutable() {
+        if (!((bitField0_ & 0x00100000) == 0x00100000)) {
+          pList_ = new java.util.ArrayList<>(pList_);
+          bitField0_ |= 0x00100000;
+        }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          User, User.Builder, UserOrBuilder> pListBuilder_;
+
+      /**
+       * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+       */
+      public java.util.List<User> getPListList() {
+        if (pListBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(pList_);
+        } else {
+          return pListBuilder_.getMessageList();
+        }
+      }
+
+      /**
+       * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+       */
+      public int getPListCount() {
+        if (pListBuilder_ == null) {
+          return pList_.size();
+        } else {
+          return pListBuilder_.getCount();
+        }
+      }
+
+      /**
+       * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+       */
+      public User getPList(int index) {
+        if (pListBuilder_ == null) {
+          return pList_.get(index);
+        } else {
+          return pListBuilder_.getMessage(index);
+        }
+      }
+
+      /**
+       * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+       */
+      public Builder setPList(
+          int index, User value) {
+        if (pListBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensurePListIsMutable();
+          pList_.set(index, value);
+          onChanged();
+        } else {
+          pListBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+
+      /**
+       * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+       */
+      public Builder setPList(
+          int index, User.Builder builderForValue) {
+        if (pListBuilder_ == null) {
+          ensurePListIsMutable();
+          pList_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          pListBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+
+      /**
+       * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+       */
+      public Builder addPList(User value) {
+        if (pListBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensurePListIsMutable();
+          pList_.add(value);
+          onChanged();
+        } else {
+          pListBuilder_.addMessage(value);
+        }
+        return this;
+      }
+
+      /**
+       * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+       */
+      public Builder addPList(
+          int index, User value) {
+        if (pListBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensurePListIsMutable();
+          pList_.add(index, value);
+          onChanged();
+        } else {
+          pListBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+
+      /**
+       * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+       */
+      public Builder addPList(
+          User.Builder builderForValue) {
+        if (pListBuilder_ == null) {
+          ensurePListIsMutable();
+          pList_.add(builderForValue.build());
+          onChanged();
+        } else {
+          pListBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+
+      /**
+       * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+       */
+      public Builder addPList(
+          int index, User.Builder builderForValue) {
+        if (pListBuilder_ == null) {
+          ensurePListIsMutable();
+          pList_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          pListBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+
+      /**
+       * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+       */
+      public Builder addAllPList(
+          Iterable<? extends User> values) {
+        if (pListBuilder_ == null) {
+          ensurePListIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, pList_);
+          onChanged();
+        } else {
+          pListBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+
+      /**
+       * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+       */
+      public Builder clearPList() {
+        if (pListBuilder_ == null) {
+          pList_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00100000);
+          onChanged();
+        } else {
+          pListBuilder_.clear();
+        }
+        return this;
+      }
+
+      /**
+       * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+       */
+      public Builder removePList(int index) {
+        if (pListBuilder_ == null) {
+          ensurePListIsMutable();
+          pList_.remove(index);
+          onChanged();
+        } else {
+          pListBuilder_.remove(index);
+        }
+        return this;
+      }
+
+      /**
+       * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+       */
+      public User.Builder getPListBuilder(
+          int index) {
+        return getPListFieldBuilder().getBuilder(index);
+      }
+
+      /**
+       * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+       */
+      public UserOrBuilder getPListOrBuilder(
+          int index) {
+        if (pListBuilder_ == null) {
+          return pList_.get(index);
+        } else {
+          return pListBuilder_.getMessageOrBuilder(index);
+        }
+      }
+
+      /**
+       * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+       */
+      public java.util.List<? extends UserOrBuilder>
+      getPListOrBuilderList() {
+        if (pListBuilder_ != null) {
+          return pListBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(pList_);
+        }
+      }
+
+      /**
+       * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+       */
+      public User.Builder addPListBuilder() {
+        return getPListFieldBuilder().addBuilder(
+            User.getDefaultInstance());
+      }
+
+      /**
+       * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+       */
+      public User.Builder addPListBuilder(
+          int index) {
+        return getPListFieldBuilder().addBuilder(
+            index, User.getDefaultInstance());
+      }
+
+      /**
+       * <code>repeated .org.apache.servicecomb.foundation.protobuf.internal.model.User pList = 21;</code>
+       */
+      public java.util.List<User.Builder>
+      getPListBuilderList() {
+        return getPListFieldBuilder().getBuilderList();
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          User, User.Builder, UserOrBuilder>
+      getPListFieldBuilder() {
+        if (pListBuilder_ == null) {
+          pListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<>(
+              pList_,
+              ((bitField0_ & 0x00100000) == 0x00100000),
+              getParentForChildren(),
+              isClean());
+          pList_ = null;
+        }
+        return pListBuilder_;
+      }
+
+      private com.google.protobuf.Any any_ = null;
+
+      private com.google.protobuf.SingleFieldBuilderV3<
+          com.google.protobuf.Any, com.google.protobuf.Any.Builder, com.google.protobuf.AnyOrBuilder> anyBuilder_;
+
+      /**
+       * <code>.google.protobuf.Any any = 22;</code>
+       */
+      public boolean hasAny() {
+        return anyBuilder_ != null || any_ != null;
+      }
+
+      /**
+       * <code>.google.protobuf.Any any = 22;</code>
+       */
+      public com.google.protobuf.Any getAny() {
+        if (anyBuilder_ == null) {
+          return any_ == null ? com.google.protobuf.Any.getDefaultInstance() : any_;
+        } else {
+          return anyBuilder_.getMessage();
+        }
+      }
+
+      /**
+       * <code>.google.protobuf.Any any = 22;</code>
+       */
+      public Builder setAny(com.google.protobuf.Any value) {
+        if (anyBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          any_ = value;
+          onChanged();
+        } else {
+          anyBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+
+      /**
+       * <code>.google.protobuf.Any any = 22;</code>
+       */
+      public Builder setAny(
+          com.google.protobuf.Any.Builder builderForValue) {
+        if (anyBuilder_ == null) {
+          any_ = builderForValue.build();
+          onChanged();
+        } else {
+          anyBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+
+      /**
+       * <code>.google.protobuf.Any any = 22;</code>
+       */
+      public Builder mergeAny(com.google.protobuf.Any value) {
+        if (anyBuilder_ == null) {
+          if (any_ != null) {
+            any_ =
+                com.google.protobuf.Any.newBuilder(any_).mergeFrom(value).buildPartial();
+          } else {
+            any_ = value;
+          }
+          onChanged();
+        } else {
+          anyBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+
+      /**
+       * <code>.google.protobuf.Any any = 22;</code>
+       */
+      public Builder clearAny() {
+        if (anyBuilder_ == null) {
+          any_ = null;
+          onChanged();
+        } else {
+          any_ = null;
+          anyBuilder_ = null;
+        }
+
+        return this;
+      }
+
+      /**
+       * <code>.google.protobuf.Any any = 22;</code>
+       */
+      public com.google.protobuf.Any.Builder getAnyBuilder() {
+
+        onChanged();
+        return getAnyFieldBuilder().getBuilder();
+      }
+
+      /**
+       * <code>.google.protobuf.Any any = 22;</code>
+       */
+      public com.google.protobuf.AnyOrBuilder getAnyOrBuilder() {
+        if (anyBuilder_ != null) {
+          return anyBuilder_.getMessageOrBuilder();
+        } else {
+          return any_ == null ?
+              com.google.protobuf.Any.getDefaultInstance() : any_;
+        }
+      }
+
+      /**
+       * <code>.google.protobuf.Any any = 22;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          com.google.protobuf.Any, com.google.protobuf.Any.Builder, com.google.protobuf.AnyOrBuilder>
+      getAnyFieldBuilder() {
+        if (anyBuilder_ == null) {
+          anyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<>(
+              getAny(),
+              getParentForChildren(),
+              isClean());
+          any_ = null;
+        }
+        return anyBuilder_;
+      }
+
+      private java.util.List<com.google.protobuf.Any> anys_ =
+          java.util.Collections.emptyList();
+
+      private void ensureAnysIsMutable() {
+        if (!((bitField0_ & 0x00400000) == 0x00400000)) {
+          anys_ = new java.util.ArrayList<>(anys_);
+          bitField0_ |= 0x00400000;
+        }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.Any, com.google.protobuf.Any.Builder, com.google.protobuf.AnyOrBuilder> anysBuilder_;
+
+      /**
+       * <code>repeated .google.protobuf.Any anys = 23;</code>
+       */
+      public java.util.List<com.google.protobuf.Any> getAnysList() {
+        if (anysBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(anys_);
+        } else {
+          return anysBuilder_.getMessageList();
+        }
+      }
+
+      /**
+       * <code>repeated .google.protobuf.Any anys = 23;</code>
+       */
+      public int getAnysCount() {
+        if (anysBuilder_ == null) {
+          return anys_.size();
+        } else {
+          return anysBuilder_.getCount();
+        }
+      }
+
+      /**
+       * <code>repeated .google.protobuf.Any anys = 23;</code>
+       */
+      public com.google.protobuf.Any getAnys(int index) {
+        if (anysBuilder_ == null) {
+          return anys_.get(index);
+        } else {
+          return anysBuilder_.getMessage(index);
+        }
+      }
+
+      /**
+       * <code>repeated .google.protobuf.Any anys = 23;</code>
+       */
+      public Builder setAnys(
+          int index, com.google.protobuf.Any value) {
+        if (anysBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAnysIsMutable();
+          anys_.set(index, value);
+          onChanged();
+        } else {
+          anysBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+
+      /**
+       * <code>repeated .google.protobuf.Any anys = 23;</code>
+       */
+      public Builder setAnys(
+          int index, com.google.protobuf.Any.Builder builderForValue) {
+        if (anysBuilder_ == null) {
+          ensureAnysIsMutable();
+          anys_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          anysBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+
+      /**
+       * <code>repeated .google.protobuf.Any anys = 23;</code>
+       */
+      public Builder addAnys(com.google.protobuf.Any value) {
+        if (anysBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAnysIsMutable();
+          anys_.add(value);
+          onChanged();
+        } else {
+          anysBuilder_.addMessage(value);
+        }
+        return this;
+      }
+
+      /**
+       * <code>repeated .google.protobuf.Any anys = 23;</code>
+       */
+      public Builder addAnys(
+          int index, com.google.protobuf.Any value) {
+        if (anysBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAnysIsMutable();
+          anys_.add(index, value);
+          onChanged();
+        } else {
+          anysBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+
+      /**
+       * <code>repeated .google.protobuf.Any anys = 23;</code>
+       */
+      public Builder addAnys(
+          com.google.protobuf.Any.Builder builderForValue) {
+        if (anysBuilder_ == null) {
+          ensureAnysIsMutable();
+          anys_.add(builderForValue.build());
+          onChanged();
+        } else {
+          anysBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+
+      /**
+       * <code>repeated .google.protobuf.Any anys = 23;</code>
+       */
+      public Builder addAnys(
+          int index, com.google.protobuf.Any.Builder builderForValue) {
+        if (anysBuilder_ == null) {
+          ensureAnysIsMutable();
+          anys_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          anysBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+
+      /**
+       * <code>repeated .google.protobuf.Any anys = 23;</code>
+       */
+      public Builder addAllAnys(
+          Iterable<? extends com.google.protobuf.Any> values) {
+        if (anysBuilder_ == null) {
+          ensureAnysIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, anys_);
+          onChanged();
+        } else {
+          anysBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+
+      /**
+       * <code>repeated .google.protobuf.Any anys = 23;</code>
+       */
+      public Builder clearAnys() {
+        if (anysBuilder_ == null) {
+          anys_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00400000);
+          onChanged();
+        } else {
+          anysBuilder_.clear();
+        }
+        return this;
+      }
+
+      /**
+       * <code>repeated .google.protobuf.Any anys = 23;</code>
+       */
+      public Builder removeAnys(int index) {
+        if (anysBuilder_ == null) {
+          ensureAnysIsMutable();
+          anys_.remove(index);
+          onChanged();
+        } else {
+          anysBuilder_.remove(index);
+        }
+        return this;
+      }
+
+      /**
+       * <code>repeated .google.protobuf.Any anys = 23;</code>
+       */
+      public com.google.protobuf.Any.Builder getAnysBuilder(
+          int index) {
+        return getAnysFieldBuilder().getBuilder(index);
+      }
+
+      /**
+       * <code>repeated .google.protobuf.Any anys = 23;</code>
+       */
+      public com.google.protobuf.AnyOrBuilder getAnysOrBuilder(
+          int index) {
+        if (anysBuilder_ == null) {
+          return anys_.get(index);
+        } else {
+          return anysBuilder_.getMessageOrBuilder(index);
+        }
+      }
+
+      /**
+       * <code>repeated .google.protobuf.Any anys = 23;</code>
+       */
+      public java.util.List<? extends com.google.protobuf.AnyOrBuilder>
+      getAnysOrBuilderList() {
+        if (anysBuilder_ != null) {
+          return anysBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(anys_);
+        }
+      }
+
+      /**
+       * <code>repeated .google.protobuf.Any anys = 23;</code>
+       */
+      public com.google.protobuf.Any.Builder addAnysBuilder() {
+        return getAnysFieldBuilder().addBuilder(
+            com.google.protobuf.Any.getDefaultInstance());
+      }
+
+      /**
+       * <code>repeated .google.protobuf.Any anys = 23;</code>
+       */
+      public com.google.protobuf.Any.Builder addAnysBuilder(
+          int index) {
+        return getAnysFieldBuilder().addBuilder(
+            index, com.google.protobuf.Any.getDefaultInstance());
+      }
+
+      /**
+       * <code>repeated .google.protobuf.Any anys = 23;</code>
+       */
+      public java.util.List<com.google.protobuf.Any.Builder>
+      getAnysBuilderList() {
+        return getAnysFieldBuilder().getBuilderList();
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.Any, com.google.protobuf.Any.Builder, com.google.protobuf.AnyOrBuilder>
+      getAnysFieldBuilder() {
+        if (anysBuilder_ == null) {
+          anysBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<>(
+              anys_,
+              ((bitField0_ & 0x00400000) == 0x00400000),
+              getParentForChildren(),
+              isClean());
+          anys_ = null;
+        }
+        return anysBuilder_;
+      }
+
+      private Root typeRecursive_ = null;
+
+      private com.google.protobuf.SingleFieldBuilderV3<
+          Root, Builder, RootOrBuilder> typeRecursiveBuilder_;
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 24;</code>
+       */
+      public boolean hasTypeRecursive() {
+        return typeRecursiveBuilder_ != null || typeRecursive_ != null;
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 24;</code>
+       */
+      public Root getTypeRecursive() {
+        if (typeRecursiveBuilder_ == null) {
+          return typeRecursive_ == null ? Root.getDefaultInstance() : typeRecursive_;
+        } else {
+          return typeRecursiveBuilder_.getMessage();
+        }
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 24;</code>
+       */
+      public Builder setTypeRecursive(Root value) {
+        if (typeRecursiveBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          typeRecursive_ = value;
+          onChanged();
+        } else {
+          typeRecursiveBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 24;</code>
+       */
+      public Builder setTypeRecursive(
+          Builder builderForValue) {
+        if (typeRecursiveBuilder_ == null) {
+          typeRecursive_ = builderForValue.build();
+          onChanged();
+        } else {
+          typeRecursiveBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 24;</code>
+       */
+      public Builder mergeTypeRecursive(Root value) {
+        if (typeRecursiveBuilder_ == null) {
+          if (typeRecursive_ != null) {
+            typeRecursive_ =
+                Root.newBuilder(typeRecursive_).mergeFrom(value).buildPartial();
+          } else {
+            typeRecursive_ = value;
+          }
+          onChanged();
+        } else {
+          typeRecursiveBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 24;</code>
+       */
+      public Builder clearTypeRecursive() {
+        if (typeRecursiveBuilder_ == null) {
+          typeRecursive_ = null;
+          onChanged();
+        } else {
+          typeRecursive_ = null;
+          typeRecursiveBuilder_ = null;
+        }
+
+        return this;
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 24;</code>
+       */
+      public Builder getTypeRecursiveBuilder() {
+
+        onChanged();
+        return getTypeRecursiveFieldBuilder().getBuilder();
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 24;</code>
+       */
+      public RootOrBuilder getTypeRecursiveOrBuilder() {
+        if (typeRecursiveBuilder_ != null) {
+          return typeRecursiveBuilder_.getMessageOrBuilder();
+        } else {
+          return typeRecursive_ == null ?
+              Root.getDefaultInstance() : typeRecursive_;
+        }
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 24;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          Root, Builder, RootOrBuilder>
+      getTypeRecursiveFieldBuilder() {
+        if (typeRecursiveBuilder_ == null) {
+          typeRecursiveBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<>(
+              getTypeRecursive(),
+              getParentForChildren(),
+              isClean());
+          typeRecursive_ = null;
+        }
+        return typeRecursiveBuilder_;
+      }
+
+      @Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFieldsProto3(unknownFields);
+      }
+
+      @Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+      // @@protoc_insertion_point(builder_scope:org.apache.servicecomb.foundation.protobuf.internal.model.Root)
+    }
+
+    // @@protoc_insertion_point(class_scope:org.apache.servicecomb.foundation.protobuf.internal.model.Root)
+    private static final Root DEFAULT_INSTANCE;
+
+    static {
+      DEFAULT_INSTANCE = new Root();
+    }
+
+    public static Root getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static final com.google.protobuf.Parser<Root>
+        PARSER = new com.google.protobuf.AbstractParser<Root>() {
+      @Override
+      public Root parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Root(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<Root> parser() {
+      return PARSER;
+    }
+
+    @Override
+    public com.google.protobuf.Parser<Root> getParserForType() {
+      return PARSER;
+    }
+
+    @Override
+    public Root getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+  }
+
+  public interface UserOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:org.apache.servicecomb.foundation.protobuf.internal.model.User)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>string name = 1;</code>
+     */
+    String getName();
+
+    /**
+     * <code>string name = 1;</code>
+     */
+    com.google.protobuf.ByteString
+    getNameBytes();
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 2;</code>
+     */
+    boolean hasTypeRecursive();
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 2;</code>
+     */
+    Root getTypeRecursive();
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 2;</code>
+     */
+    RootOrBuilder getTypeRecursiveOrBuilder();
+  }
+
+  /**
+   * Protobuf type {@code org.apache.servicecomb.foundation.protobuf.internal.model.User}
+   */
+  public static final class User extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:org.apache.servicecomb.foundation.protobuf.internal.model.User)
+      UserOrBuilder {
+    private static final long serialVersionUID = 0L;
+
+    // Use User.newBuilder() to construct.
+    private User(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+
+    private User() {
+      name_ = "";
+    }
+
+    @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 {
+      this();
+      if (extensionRegistry == null) {
+        throw new NullPointerException();
+      }
+      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;
+            case 10: {
+              String s = input.readStringRequireUtf8();
+
+              name_ = s;
+              break;
+            }
+            case 18: {
+              Root.Builder subBuilder = null;
+              if (typeRecursive_ != null) {
+                subBuilder = typeRecursive_.toBuilder();
+              }
+              typeRecursive_ = input.readMessage(Root.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(typeRecursive_);
+                typeRecursive_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            default: {
+              if (!parseUnknownFieldProto3(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+
+    public static final com.google.protobuf.Descriptors.Descriptor
+    getDescriptor() {
+      return ProtobufRoot.internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_User_descriptor;
+    }
+
+    @Override
+    protected FieldAccessorTable
+    internalGetFieldAccessorTable() {
+      return ProtobufRoot.internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_User_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              User.class, Builder.class);
+    }
+
+    public static final int NAME_FIELD_NUMBER = 1;
+
+    private volatile Object name_;
+
+    /**
+     * <code>string name = 1;</code>
+     */
+    public String getName() {
+      Object ref = name_;
+      if (ref instanceof String) {
+        return (String) ref;
+      } else {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        String s = bs.toStringUtf8();
+        name_ = s;
+        return s;
+      }
+    }
+
+    /**
+     * <code>string name = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+    getNameBytes() {
+      Object ref = name_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b =
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int TYPERECURSIVE_FIELD_NUMBER = 2;
+
+    private Root typeRecursive_;
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 2;</code>
+     */
+    public boolean hasTypeRecursive() {
+      return typeRecursive_ != null;
+    }
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 2;</code>
+     */
+    public Root getTypeRecursive() {
+      return typeRecursive_ == null ? Root.getDefaultInstance() : typeRecursive_;
+    }
+
+    /**
+     * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 2;</code>
+     */
+    public RootOrBuilder getTypeRecursiveOrBuilder() {
+      return getTypeRecursive();
+    }
+
+    private byte memoizedIsInitialized = -1;
+
+    @Override
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) {
+        return true;
+      }
+      if (isInitialized == 0) {
+        return false;
+      }
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    @Override
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+        throws java.io.IOException {
+      if (!getNameBytes().isEmpty()) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
+      }
+      if (typeRecursive_ != null) {
+        output.writeMessage(2, getTypeRecursive());
+      }
+      unknownFields.writeTo(output);
+    }
+
+    @Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) {
+        return size;
+      }
+
+      size = 0;
+      if (!getNameBytes().isEmpty()) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
+      }
+      if (typeRecursive_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, getTypeRecursive());
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @Override
+    public boolean equals(final Object obj) {
+      if (obj == this) {
+        return true;
+      }
+      if (!(obj instanceof User)) {
+        return super.equals(obj);
+      }
+      User other = (User) obj;
+
+      boolean result = true;
+      result = result && getName()
+          .equals(other.getName());
+      result = result && (hasTypeRecursive() == other.hasTypeRecursive());
+      if (hasTypeRecursive()) {
+        result = result && getTypeRecursive()
+            .equals(other.getTypeRecursive());
+      }
+      result = result && unknownFields.equals(other.unknownFields);
+      return result;
+    }
+
+    @Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (37 * hash) + NAME_FIELD_NUMBER;
+      hash = (53 * hash) + getName().hashCode();
+      if (hasTypeRecursive()) {
+        hash = (37 * hash) + TYPERECURSIVE_FIELD_NUMBER;
+        hash = (53 * hash) + getTypeRecursive().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static User parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+
+    public static User parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+
+    public static User parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+
+    public static User parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+
+    public static User parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+
+    public static User parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+
+    public static User parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+
+    public static User parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public static User parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+
+    public static User parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public static User parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+
+    public static User parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    @Override
+    public Builder newBuilderForType() {
+      return newBuilder();
+    }
+
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+
+    public static Builder newBuilder(User prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+
+    @Override
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @Override
+    protected Builder newBuilderForType(
+        BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+
+    /**
+     * Protobuf type {@code org.apache.servicecomb.foundation.protobuf.internal.model.User}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:org.apache.servicecomb.foundation.protobuf.internal.model.User)
+        UserOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+      getDescriptor() {
+        return ProtobufRoot.internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_User_descriptor;
+      }
+
+      @Override
+      protected FieldAccessorTable
+      internalGetFieldAccessorTable() {
+        return ProtobufRoot.internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_User_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                User.class, Builder.class);
+      }
+
+      // Construct using org.apache.servicecomb.foundation.protobuf.internal.model.ProtobufRoot.User.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+            .alwaysUseFieldBuilders) {
+        }
+      }
+
+      @Override
+      public Builder clear() {
+        super.clear();
+        name_ = "";
+
+        if (typeRecursiveBuilder_ == null) {
+          typeRecursive_ = null;
+        } else {
+          typeRecursive_ = null;
+          typeRecursiveBuilder_ = null;
+        }
+        return this;
+      }
+
+      @Override
+      public com.google.protobuf.Descriptors.Descriptor
+      getDescriptorForType() {
+        return ProtobufRoot.internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_User_descriptor;
+      }
+
+      @Override
+      public User getDefaultInstanceForType() {
+        return User.getDefaultInstance();
+      }
+
+      @Override
+      public User build() {
+        User result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @Override
+      public User buildPartial() {
+        User result = new User(this);
+        result.name_ = name_;
+        if (typeRecursiveBuilder_ == null) {
+          result.typeRecursive_ = typeRecursive_;
+        } else {
+          result.typeRecursive_ = typeRecursiveBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      @Override
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+
+      @Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          Object value) {
+        return (Builder) super.setField(field, value);
+      }
+
+      @Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+
+      @Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+
+      @Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+
+      @Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+
+      @Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof User) {
+          return mergeFrom((User) other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(User other) {
+        if (other == User.getDefaultInstance()) {
+          return this;
+        }
+        if (!other.getName().isEmpty()) {
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasTypeRecursive()) {
+          mergeTypeRecursive(other.getTypeRecursive());
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      @Override
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      @Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        User parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (User) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+
+      private Object name_ = "";
+
+      /**
+       * <code>string name = 1;</code>
+       */
+      public String getName() {
+        Object ref = name_;
+        if (!(ref instanceof String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          String s = bs.toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (String) ref;
+        }
+      }
+
+      /**
+       * <code>string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+      getNameBytes() {
+        Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b =
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      /**
+       * <code>string name = 1;</code>
+       */
+      public Builder setName(
+          String value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>string name = 1;</code>
+       */
+      public Builder clearName() {
+
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+
+      /**
+       * <code>string name = 1;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        checkByteStringIsUtf8(value);
+
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      private Root typeRecursive_ = null;
+
+      private com.google.protobuf.SingleFieldBuilderV3<
+          Root, Root.Builder, RootOrBuilder> typeRecursiveBuilder_;
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 2;</code>
+       */
+      public boolean hasTypeRecursive() {
+        return typeRecursiveBuilder_ != null || typeRecursive_ != null;
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 2;</code>
+       */
+      public Root getTypeRecursive() {
+        if (typeRecursiveBuilder_ == null) {
+          return typeRecursive_ == null ? Root.getDefaultInstance() : typeRecursive_;
+        } else {
+          return typeRecursiveBuilder_.getMessage();
+        }
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 2;</code>
+       */
+      public Builder setTypeRecursive(Root value) {
+        if (typeRecursiveBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          typeRecursive_ = value;
+          onChanged();
+        } else {
+          typeRecursiveBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 2;</code>
+       */
+      public Builder setTypeRecursive(
+          Root.Builder builderForValue) {
+        if (typeRecursiveBuilder_ == null) {
+          typeRecursive_ = builderForValue.build();
+          onChanged();
+        } else {
+          typeRecursiveBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 2;</code>
+       */
+      public Builder mergeTypeRecursive(Root value) {
+        if (typeRecursiveBuilder_ == null) {
+          if (typeRecursive_ != null) {
+            typeRecursive_ =
+                Root.newBuilder(typeRecursive_).mergeFrom(value).buildPartial();
+          } else {
+            typeRecursive_ = value;
+          }
+          onChanged();
+        } else {
+          typeRecursiveBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 2;</code>
+       */
+      public Builder clearTypeRecursive() {
+        if (typeRecursiveBuilder_ == null) {
+          typeRecursive_ = null;
+          onChanged();
+        } else {
+          typeRecursive_ = null;
+          typeRecursiveBuilder_ = null;
+        }
+
+        return this;
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 2;</code>
+       */
+      public Root.Builder getTypeRecursiveBuilder() {
+
+        onChanged();
+        return getTypeRecursiveFieldBuilder().getBuilder();
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 2;</code>
+       */
+      public RootOrBuilder getTypeRecursiveOrBuilder() {
+        if (typeRecursiveBuilder_ != null) {
+          return typeRecursiveBuilder_.getMessageOrBuilder();
+        } else {
+          return typeRecursive_ == null ?
+              Root.getDefaultInstance() : typeRecursive_;
+        }
+      }
+
+      /**
+       * <code>.org.apache.servicecomb.foundation.protobuf.internal.model.Root typeRecursive = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          Root, Root.Builder, RootOrBuilder>
+      getTypeRecursiveFieldBuilder() {
+        if (typeRecursiveBuilder_ == null) {
+          typeRecursiveBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<>(
+              getTypeRecursive(),
+              getParentForChildren(),
+              isClean());
+          typeRecursive_ = null;
+        }
+        return typeRecursiveBuilder_;
+      }
+
+      @Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFieldsProto3(unknownFields);
+      }
+
+      @Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+      // @@protoc_insertion_point(builder_scope:org.apache.servicecomb.foundation.protobuf.internal.model.User)
+    }
+
+    // @@protoc_insertion_point(class_scope:org.apache.servicecomb.foundation.protobuf.internal.model.User)
+    private static final User DEFAULT_INSTANCE;
+
+    static {
+      DEFAULT_INSTANCE = new User();
+    }
+
+    public static User getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static final com.google.protobuf.Parser<User>
+        PARSER = new com.google.protobuf.AbstractParser<User>() {
+      @Override
+      public User parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new User(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<User> parser() {
+      return PARSER;
+    }
+
+    @Override
+    public com.google.protobuf.Parser<User> getParserForType() {
+      return PARSER;
+    }
+
+    @Override
+    public User getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+  }
+
+  private static final com.google.protobuf.Descriptors.Descriptor
+      internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_descriptor;
+
+  private static final
+  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_fieldAccessorTable;
+
+  private static final com.google.protobuf.Descriptors.Descriptor
+      internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_SsMapEntry_descriptor;
+
+  private static final
+  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_SsMapEntry_fieldAccessorTable;
+
+  private static final com.google.protobuf.Descriptors.Descriptor
+      internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_SpMapEntry_descriptor;
+
+  private static final
+  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_SpMapEntry_fieldAccessorTable;
+
+  private static final com.google.protobuf.Descriptors.Descriptor
+      internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_User_descriptor;
+
+  private static final
+  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_User_fieldAccessorTable;
+
+  public static com.google.protobuf.Descriptors.FileDescriptor
+  getDescriptor() {
+    return descriptor;
+  }
+
+  private static com.google.protobuf.Descriptors.FileDescriptor
+      descriptor;
+
+  static {
+    String[] descriptorData = {
+        "\n\022protobufRoot.proto\0229org.apache.service" +
+            "comb.foundation.protobuf.internal.model\032" +
+            "\031google/protobuf/any.proto\"\361\007\n\004Root\022\r\n\005i" +
+            "nt32\030\001 \001(\005\022\r\n\005int64\030\002 \001(\003\022\016\n\006uint32\030\003 \001(" +
+            "\r\022\016\n\006uint64\030\004 \001(\004\022\016\n\006sint32\030\005 \001(\021\022\016\n\006sin" +
+            "t64\030\006 \001(\022\022\017\n\007fixed32\030\007 \001(\007\022\017\n\007fixed64\030\010 " +
+            "\001(\006\022\020\n\010sfixed32\030\t \001(\017\022\020\n\010sfixed64\030\n \001(\020\022" +
+            "\022\n\nfloatValue\030\013 \001(\002\022\023\n\013doubleValue\030\014 \001(\001" +
+            "\022\014\n\004bool\030\r \001(\010\022\016\n\006string\030\016 \001(\t\022\r\n\005bytes\030" +
+            "\017 \001(\014\022O\n\005color\030\020 \001(\0162@.org.apache.servic" +
+            "ecomb.foundation.protobuf.internal.model" +
+            ".Color\022M\n\004user\030\021 \001(\0132?.org.apache.servic" +
+            "ecomb.foundation.protobuf.internal.model" +
+            ".User\022Y\n\005ssMap\030\022 \003(\0132J.org.apache.servic" +
+            "ecomb.foundation.protobuf.internal.model" +
+            ".Root.SsMapEntry\022Y\n\005spMap\030\023 \003(\0132J.org.ap" +
+            "ache.servicecomb.foundation.protobuf.int" +
+            "ernal.model.Root.SpMapEntry\022\r\n\005sList\030\024 \003" +
+            "(\t\022N\n\005pList\030\025 \003(\0132?.org.apache.serviceco" +
+            "mb.foundation.protobuf.internal.model.Us" +
+            "er\022!\n\003any\030\026 \001(\0132\024.google.protobuf.Any\022\"\n" +
+            "\004anys\030\027 \003(\0132\024.google.protobuf.Any\022V\n\rtyp" +
+            "eRecursive\030\030 \001(\0132?.org.apache.servicecom" +
+            "b.foundation.protobuf.internal.model.Roo" +
+            "t\032,\n\nSsMapEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 " +
+            "\001(\t:\0028\001\032m\n\nSpMapEntry\022\013\n\003key\030\001 \001(\t\022N\n\005va" +
+            "lue\030\002 \001(\0132?.org.apache.servicecomb.found" +
+            "ation.protobuf.internal.model.User:\0028\001\"l" +
+            "\n\004User\022\014\n\004name\030\001 \001(\t\022V\n\rtypeRecursive\030\002 " +
+            "\001(\0132?.org.apache.servicecomb.foundation." +
+            "protobuf.internal.model.Root*&\n\005Color\022\007\n" +
+            "\003RED\020\000\022\n\n\006YELLOW\020\001\022\010\n\004BLUE\020\002b\006proto3"
+    };
+    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[] {
+                com.google.protobuf.AnyProto.getDescriptor(),
+            }, assigner);
+    internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_descriptor =
+        getDescriptor().getMessageTypes().get(0);
+    internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_fieldAccessorTable = new
+        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_descriptor,
+        new String[] {"Int32", "Int64", "Uint32", "Uint64", "Sint32", "Sint64", "Fixed32", "Fixed64", "Sfixed32",
+            "Sfixed64", "FloatValue", "DoubleValue", "Bool", "String", "Bytes", "Color", "User", "SsMap", "SpMap",
+            "SList", "PList", "Any", "Anys", "TypeRecursive",});
+    internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_SsMapEntry_descriptor =
+        internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_descriptor.getNestedTypes()
+            .get(0);
+    internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_SsMapEntry_fieldAccessorTable = new
+        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_SsMapEntry_descriptor,
+        new String[] {"Key", "Value",});
+    internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_SpMapEntry_descriptor =
+        internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_descriptor.getNestedTypes()
+            .get(1);
+    internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_SpMapEntry_fieldAccessorTable = new
+        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_Root_SpMapEntry_descriptor,
+        new String[] {"Key", "Value",});
+    internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_User_descriptor =
+        getDescriptor().getMessageTypes().get(1);
+    internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_User_fieldAccessorTable = new
+        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_org_apache_servicecomb_foundation_protobuf_internal_model_User_descriptor,
+        new String[] {"Name", "TypeRecursive",});
+    com.google.protobuf.AnyProto.getDescriptor();
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/Root.java b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/Root.java
new file mode 100644
index 0000000..d4241dd
--- /dev/null
+++ b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/Root.java
@@ -0,0 +1,262 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicecomb.foundation.protobuf.internal.model;
+
+import java.util.List;
+import java.util.Map;
+
+public class Root {
+  private int int32;
+
+  private long int64;
+
+  private int uint32;
+
+  private long uint64;
+
+  private int sint32;
+
+  private long sint64;
+
+  private int fixed32;
+
+  private long fixed64;
+
+  private int sfixed32;
+
+  private long sfixed64;
+
+  private float floatValue;
+
+  private double doubleValue;
+
+  private boolean bool;
+
+  private String string;
+
+  private byte[] bytes;
+
+  private Color color;
+
+  private User user;
+
+  private Map<String, String> ssMap;
+
+  private Map<String, User> spMap;
+
+  private List<String> sList;
+
+  private List<User> pList;
+
+  private Object any;
+
+  private List<Object> anys;
+
+  private Root typeRecursive;
+
+  public int getInt32() {
+    return int32;
+  }
+
+  public void setInt32(int int32) {
+    this.int32 = int32;
+  }
+
+  public long getInt64() {
+    return int64;
+  }
+
+  public void setInt64(long int64) {
+    this.int64 = int64;
+  }
+
+  public int getUint32() {
+    return uint32;
+  }
+
+  public void setUint32(int uint32) {
+    this.uint32 = uint32;
+  }
+
+  public long getUint64() {
+    return uint64;
+  }
+
+  public void setUint64(long uint64) {
+    this.uint64 = uint64;
+  }
+
+  public int getSint32() {
+    return sint32;
+  }
+
+  public void setSint32(int sint32) {
+    this.sint32 = sint32;
+  }
+
+  public long getSint64() {
+    return sint64;
+  }
+
+  public void setSint64(long sint64) {
+    this.sint64 = sint64;
+  }
+
+  public int getFixed32() {
+    return fixed32;
+  }
+
+  public void setFixed32(int fixed32) {
+    this.fixed32 = fixed32;
+  }
+
+  public long getFixed64() {
+    return fixed64;
+  }
+
+  public void setFixed64(long fixed64) {
+    this.fixed64 = fixed64;
+  }
+
+  public int getSfixed32() {
+    return sfixed32;
+  }
+
+  public void setSfixed32(int sfixed32) {
+    this.sfixed32 = sfixed32;
+  }
+
+  public long getSfixed64() {
+    return sfixed64;
+  }
+
+  public void setSfixed64(long sfixed64) {
+    this.sfixed64 = sfixed64;
+  }
+
+  public float getFloatValue() {
+    return floatValue;
+  }
+
+  public void setFloatValue(float floatValue) {
+    this.floatValue = floatValue;
+  }
+
+  public double getDoubleValue() {
+    return doubleValue;
+  }
+
+  public void setDoubleValue(double doubleValue) {
+    this.doubleValue = doubleValue;
+  }
+
+  public boolean isBool() {
+    return bool;
+  }
+
+  public void setBool(boolean bool) {
+    this.bool = bool;
+  }
+
+  public String getString() {
+    return string;
+  }
+
+  public void setString(String string) {
+    this.string = string;
+  }
+
+  public byte[] getBytes() {
+    return bytes;
+  }
+
+  public void setBytes(byte[] bytes) {
+    this.bytes = bytes;
+  }
+
+  public Color getColor() {
+    return color;
+  }
+
+  public void setColor(Color color) {
+    this.color = color;
+  }
+
+  public User getUser() {
+    return user;
+  }
+
+  public void setUser(User user) {
+    this.user = user;
+  }
+
+  public Map<String, String> getSsMap() {
+    return ssMap;
+  }
+
+  public void setSsMap(Map<String, String> ssMap) {
+    this.ssMap = ssMap;
+  }
+
+  public Map<String, User> getSpMap() {
+    return spMap;
+  }
+
+  public void setSpMap(Map<String, User> spMap) {
+    this.spMap = spMap;
+  }
+
+  public List<String> getsList() {
+    return sList;
+  }
+
+  public void setsList(List<String> sList) {
+    this.sList = sList;
+  }
+
+  public List<User> getpList() {
+    return pList;
+  }
+
+  public void setpList(List<User> pList) {
+    this.pList = pList;
+  }
+
+  public Object getAny() {
+    return any;
+  }
+
+  public void setAny(Object any) {
+    this.any = any;
+  }
+
+  public List<Object> getAnys() {
+    return anys;
+  }
+
+  public void setAnys(List<Object> anys) {
+    this.anys = anys;
+  }
+
+  public Root getTypeRecursive() {
+    return typeRecursive;
+  }
+
+  public void setTypeRecursive(Root typeRecursive) {
+    this.typeRecursive = typeRecursive;
+  }
+}
diff --git a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/User.java b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/User.java
new file mode 100644
index 0000000..642d381
--- /dev/null
+++ b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/User.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicecomb.foundation.protobuf.internal.model;
+
+public class User {
+  private String name;
+
+  private Root typeRecursive;
+
+  public String getName() {
+    return name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  public User name(String name) {
+    this.name = name;
+    return this;
+  }
+
+  public Root getTypeRecursive() {
+    return typeRecursive;
+  }
+
+  public void setTypeRecursive(Root typeRecursive) {
+    this.typeRecursive = typeRecursive;
+  }
+
+  @Override
+  public String toString() {
+    return "User{" +
+        "name='" + name + '\'' +
+        '}';
+  }
+}
diff --git a/foundations/foundation-protobuf/src/test/resources/protobufRoot.proto b/foundations/foundation-protobuf/src/test/resources/jacksonRoot.proto
similarity index 62%
copy from foundations/foundation-protobuf/src/test/resources/protobufRoot.proto
copy to foundations/foundation-protobuf/src/test/resources/jacksonRoot.proto
index ae7ad3a..590402f 100644
--- a/foundations/foundation-protobuf/src/test/resources/protobufRoot.proto
+++ b/foundations/foundation-protobuf/src/test/resources/jacksonRoot.proto
@@ -15,39 +15,31 @@
   limitations under the License.
  */
 
-syntax = "proto3";
-import "google/protobuf/any.proto";
+syntax = "proto2";
 package org.apache.servicecomb.foundation.protobuf.internal.model;
 
 message Root {
-  int32 int32 = 1;
-  int64 int64 = 2;
-  uint32 uint32 = 3;
-  uint64 uint64 = 4;
-  sint32 sint32 = 5;
-  sint64 sint64 = 6;
-  fixed32 fixed32 = 7;
-  fixed64 fixed64 = 8;
-  sfixed32 sfixed32 = 9;
-  sfixed64 sfixed64 = 10;
-  float floatValue = 11;
-  double doubleValue = 12;
-  bool bool = 13;
-  string string = 14;
-  bytes bytes = 15;
-  Color color = 16;
-
-  User user = 17;
-
-  map<string, string> ssMap = 18;
-  map<string, User> spMap = 19;
+  optional int32 int32 = 1;
+  optional int64 int64 = 2;
+  optional uint32 uint32 = 3;
+  optional uint64 uint64 = 4;
+  optional sint32 sint32 = 5;
+  optional sint64 sint64 = 6;
+  optional fixed32 fixed32 = 7;
+  optional fixed64 fixed64 = 8;
+  optional sfixed32 sfixed32 = 9;
+  optional sfixed64 sfixed64 = 10;
+  optional float floatValue = 11;
+  optional double doubleValue = 12;
+  optional bool bool = 13;
+  optional string string = 14;
+  optional bytes bytes = 15;
+  optional Color color = 16;
+
+  optional User user = 17;
 
   repeated string sList = 20;
   repeated User pList = 21;
-
-  google.protobuf.Any any = 22;
-
-  Root typeRecursive = 23;
 }
 enum Color {
   RED = 0;
@@ -56,7 +48,5 @@ enum Color {
 }
 
 message User {
-  string name = 1;
-
-  Root typeRecursive = 2;
+  optional string name = 1;
 }
\ No newline at end of file
diff --git a/foundations/foundation-protobuf/src/test/resources/protobufRoot.proto b/foundations/foundation-protobuf/src/test/resources/protobufRoot.proto
index ae7ad3a..3cc8570 100644
--- a/foundations/foundation-protobuf/src/test/resources/protobufRoot.proto
+++ b/foundations/foundation-protobuf/src/test/resources/protobufRoot.proto
@@ -46,8 +46,9 @@ message Root {
   repeated User pList = 21;
 
   google.protobuf.Any any = 22;
+  repeated google.protobuf.Any anys = 23;
 
-  Root typeRecursive = 23;
+  Root typeRecursive = 24;
 }
 enum Color {
   RED = 0;