{"id":15306011,"url":"https://github.com/auties00/modernprotobuf","last_synced_at":"2026-01-11T17:01:59.675Z","repository":{"id":45045021,"uuid":"373107752","full_name":"Auties00/ModernProtobuf","owner":"Auties00","description":"A modern implementation of protoc to serialize, deserialize and generate java sources from protobuf schemas","archived":false,"fork":false,"pushed_at":"2025-06-29T22:43:15.000Z","size":1822,"stargazers_count":40,"open_issues_count":2,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-06-29T23:28:27.039Z","etag":null,"topics":["java","java21","protobuf","protobuf-java","protoc"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Auties00.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-06-02T09:22:46.000Z","updated_at":"2025-06-29T22:43:19.000Z","dependencies_parsed_at":"2024-01-07T23:30:28.245Z","dependency_job_id":"7197ce3f-3dd8-44dc-9068-1846ac4b31b7","html_url":"https://github.com/Auties00/ModernProtobuf","commit_stats":{"total_commits":238,"total_committers":1,"mean_commits":238.0,"dds":0.0,"last_synced_commit":"ae12f0d04b11a69e2c513ac0d6addcc99675d425"},"previous_names":["auties00/modernprotoc"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/Auties00/ModernProtobuf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Auties00%2FModernProtobuf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Auties00%2FModernProtobuf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Auties00%2FModernProtobuf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Auties00%2FModernProtobuf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Auties00","download_url":"https://codeload.github.com/Auties00/ModernProtobuf/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Auties00%2FModernProtobuf/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263671747,"owners_count":23494027,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","java21","protobuf","protobuf-java","protoc"],"created_at":"2024-10-01T08:04:08.845Z","updated_at":"2026-01-11T17:01:59.667Z","avatar_url":"https://github.com/Auties00.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\n# ModernProtobuf\n\nA modern implementation of the Protobuf specification for Java 21 and upwards.\nBoth Protobuf 2 and 3 are supported.\n\n### What is ModernProtobuf\n\nProtoc, the default compiler for protobuf schemas, can generate Java classes starting from a schema.\nThe generated code, though, is really verbose and not up to date with modern versions of Java.\nMoreover, it is not really intended to be edited, which is not optimal if you want to have the protobuf to be part of a publicly available developer API.\nAs a result, most projects that work with Google's protobuf create wrappers around the already gigantic classes generated by Google to make them more usable.\nWhile developing [Cobalt](https://github.com/Auties00/Cobalt), I faced these issues myself and, as a result, I decided to develop a custom Protobuf implementation: this repo is the result of this work.\n\n### Project setup\n\n#### Maven\n\n- Dependency\n   ```xml\n   \u003cdependency\u003e\n       \u003cgroupId\u003ecom.github.auties00\u003c/groupId\u003e\n       \u003cartifactId\u003eprotobuf-base\u003c/artifactId\u003e\n       \u003cversion\u003e4.0.0\u003c/version\u003e\n   \u003c/dependency\u003e\n   ```\n\n- Annotation processor\n   ```xml\n   \u003cplugin\u003e\n       \u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\n       \u003cartifactId\u003emaven-compiler-plugin\u003c/artifactId\u003e\n       \u003cconfiguration\u003e\n           \u003cannotationProcessorPaths\u003e\n               \u003cannotationProcessorPath\u003e\n                   \u003cgroupId\u003ecom.github.auties00\u003c/groupId\u003e\n                   \u003cartifactId\u003eprotobuf-serialization-plugin\u003c/artifactId\u003e\n                   \u003cversion\u003e4.0.0\u003c/version\u003e\n               \u003cannotationProcessorPath\u003e\n           \u003cannotationProcessorPaths\u003e\n       \u003cconfiguration\u003e\n   \u003cplugin\u003e\n   ```\n  \n#### Gradle\n\n- Groovy DSL\n    - Dependency\n    ```groovy\n    implementation 'com.github.auties00:protobuf-base:4.0.0'\n    ```\n\n    - Annotation processor\n    ```groovy\n    annotationProcessor 'com.github.auties00:protobuf-serialization-plugin:4.0.0'\n    ```\n\n- Kotlin DSL\n    - Dependency\n    ```kotlin\n    implementation(\"com.github.auties00:protobuf-base:4.0.0\")\n    ```\n\n    - Annotation processor\n    ```kotlin\n    annotationProcessor(\"com.github.auties00:protobuf-serialization-plugin:4.0.0\")\n    ```\n  \n### Schema generation and updating\n\n\u003e Download the CLI tool from the release tab or compile the project yourself using `mvn clean install`\n\nRun the following command:\n```\nprotoc generate \u003cproto\u003e --output [directory]\n```\nThis will generate an immutable record. If you want your model to be mutable, add `--mutable`.\nIf you don't want to use Optionals, add `--nullable`.\n\nIf you want to update your models, run:\n```\nprotoc update \u003cproto\u003e \u003cinput_directory\u003e --output [directory]\n```\nThis will update all models in `input_directory`.\nIf you want your updated models to be mutable, add `--mutable`\nIf you don't want to use Optionals, add `--nullable`.\n\n### Comparison with Google's implementation\n\nLet's take an example schema to make some considerations on the differences between this library and Google's implementation.\n\u003cdetails\u003e\n  \u003csummary\u003eScalarMessage.proto (15 LOC)\u003c/summary\u003e\n\n  ```\n  message ScalarMessage {\n    optional fixed32 fixed32 = 1;\n    optional sfixed32 sfixed32 = 2;\n    optional int32 int32 = 3;\n    optional uint32 uint32 = 4;\n    optional fixed64 fixed64 = 5;\n    optional sfixed64 sfixed64 = 6;\n    optional int64 int64 = 7;\n    optional uint64 uint64 = 8;\n    optional float float = 9;\n    optional double double = 10;\n    optional bool bool = 11;\n    optional string string = 12;\n    optional bytes bytes = 13;\n  }\n  ```\n\u003c/details\u003e\n\n#### Model generation\n\nModernProtobuf uses records by default to produce immutable and concise models.\nIf you need your models to be mutable, ModernProtobuf's CLI tool can generate a mutable class just as easily.\nGoogle's implementation, on the other hand, produces verbose models that cannot be edited.\nThere is no option to make your data immutable.\nHere are the models generated by each implementation, alongside how many lines of code were used:\n\u003cdetails\u003e\n  \u003csummary\u003eModernProtobuf immutable java record (29 LOC + 201 LOC generated at compile time for ScalarMessageSpec and ScalarMessageBuilder)\u003c/summary\u003e\n\n  ```\n  @ProtobufMessage\n  public record ScalarMessage(\n      @ProtobufProperty(index = 1, type = ProtobufType.FIXED32)\n      int fixed32,\n      @ProtobufProperty(index = 2, type = ProtobufType.SFIXED32)\n      int sfixed32,\n      @ProtobufProperty(index = 3, type = ProtobufType.INT32)\n      int int32,\n      @ProtobufProperty(index = 4, type = ProtobufType.UINT32)\n      int uint32,\n      @ProtobufProperty(index = 5, type = ProtobufType.FIXED64)\n      long fixed64,\n      @ProtobufProperty(index = 6, type = ProtobufType.SFIXED64)\n      long sfixed64,\n      @ProtobufProperty(index = 7, type = ProtobufType.INT64)\n      long int64,\n      @ProtobufProperty(index = 8, type = ProtobufType.UINT64)\n      long uint64,\n      @ProtobufProperty(index = 9, type = ProtobufType.FLOAT)\n      float _float,\n      @ProtobufProperty(index = 10, type = ProtobufType.DOUBLE)\n      double _double,\n      @ProtobufProperty(index = 11, type = ProtobufType.BOOL)\n      boolean bool,\n      @ProtobufProperty(index = 12, type = ProtobufType.STRING)\n      ProtobufString string,\n      @ProtobufProperty(index = 13, type = ProtobufType.BYTES)\n      ByteBuffer bytes\n  ) { }\n  ```\n\u003c/details\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eGoogle's Protobuf mutable java class (1832 LOC)\u003c/summary\u003e\n\n  ```\n// Generated by the protocol buffer compiler.  DO NOT EDIT!\n// source: scalar.proto\n\npublic final class Scalar {\n  private Scalar() {}\n  public static void registerAllExtensions(\n      com.google.protobuf.ExtensionRegistryLite registry) {\n  }\n\n  public static void registerAllExtensions(\n      com.google.protobuf.ExtensionRegistry registry) {\n    registerAllExtensions(\n        (com.google.protobuf.ExtensionRegistryLite) registry);\n  }\n  public interface ScalarMessageOrBuilder extends\n      // @@protoc_insertion_point(interface_extends:it.auties.protobuf.ScalarMessage)\n      com.google.protobuf.MessageOrBuilder {\n\n    /**\n     * \u003ccode\u003eoptional fixed32 fixed32 = 1;\u003c/code\u003e\n     * @return Whether the fixed32 field is set.\n     */\n    boolean hasFixed32();\n    /**\n     * \u003ccode\u003eoptional fixed32 fixed32 = 1;\u003c/code\u003e\n     * @return The fixed32.\n     */\n    int getFixed32();\n\n    /**\n     * \u003ccode\u003eoptional sfixed32 sfixed32 = 2;\u003c/code\u003e\n     * @return Whether the sfixed32 field is set.\n     */\n    boolean hasSfixed32();\n    /**\n     * \u003ccode\u003eoptional sfixed32 sfixed32 = 2;\u003c/code\u003e\n     * @return The sfixed32.\n     */\n    int getSfixed32();\n\n    /**\n     * \u003ccode\u003eoptional int32 int32 = 3;\u003c/code\u003e\n     * @return Whether the int32 field is set.\n     */\n    boolean hasInt32();\n    /**\n     * \u003ccode\u003eoptional int32 int32 = 3;\u003c/code\u003e\n     * @return The int32.\n     */\n    int getInt32();\n\n    /**\n     * \u003ccode\u003eoptional uint32 uint32 = 4;\u003c/code\u003e\n     * @return Whether the uint32 field is set.\n     */\n    boolean hasUint32();\n    /**\n     * \u003ccode\u003eoptional uint32 uint32 = 4;\u003c/code\u003e\n     * @return The uint32.\n     */\n    int getUint32();\n\n    /**\n     * \u003ccode\u003eoptional fixed64 fixed64 = 5;\u003c/code\u003e\n     * @return Whether the fixed64 field is set.\n     */\n    boolean hasFixed64();\n    /**\n     * \u003ccode\u003eoptional fixed64 fixed64 = 5;\u003c/code\u003e\n     * @return The fixed64.\n     */\n    long getFixed64();\n\n    /**\n     * \u003ccode\u003eoptional sfixed64 sfixed64 = 6;\u003c/code\u003e\n     * @return Whether the sfixed64 field is set.\n     */\n    boolean hasSfixed64();\n    /**\n     * \u003ccode\u003eoptional sfixed64 sfixed64 = 6;\u003c/code\u003e\n     * @return The sfixed64.\n     */\n    long getSfixed64();\n\n    /**\n     * \u003ccode\u003eoptional int64 int64 = 7;\u003c/code\u003e\n     * @return Whether the int64 field is set.\n     */\n    boolean hasInt64();\n    /**\n     * \u003ccode\u003eoptional int64 int64 = 7;\u003c/code\u003e\n     * @return The int64.\n     */\n    long getInt64();\n\n    /**\n     * \u003ccode\u003eoptional uint64 uint64 = 8;\u003c/code\u003e\n     * @return Whether the uint64 field is set.\n     */\n    boolean hasUint64();\n    /**\n     * \u003ccode\u003eoptional uint64 uint64 = 8;\u003c/code\u003e\n     * @return The uint64.\n     */\n    long getUint64();\n\n    /**\n     * \u003ccode\u003eoptional float float = 9;\u003c/code\u003e\n     * @return Whether the float field is set.\n     */\n    boolean hasFloat();\n    /**\n     * \u003ccode\u003eoptional float float = 9;\u003c/code\u003e\n     * @return The float.\n     */\n    float getFloat();\n\n    /**\n     * \u003ccode\u003eoptional double double = 10;\u003c/code\u003e\n     * @return Whether the double field is set.\n     */\n    boolean hasDouble();\n    /**\n     * \u003ccode\u003eoptional double double = 10;\u003c/code\u003e\n     * @return The double.\n     */\n    double getDouble();\n\n    /**\n     * \u003ccode\u003eoptional bool bool = 11;\u003c/code\u003e\n     * @return Whether the bool field is set.\n     */\n    boolean hasBool();\n    /**\n     * \u003ccode\u003eoptional bool bool = 11;\u003c/code\u003e\n     * @return The bool.\n     */\n    boolean getBool();\n\n    /**\n     * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n     * @return Whether the string field is set.\n     */\n    boolean hasString();\n    /**\n     * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n     * @return The string.\n     */\n    java.lang.String getString();\n    /**\n     * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n     * @return The bytes for string.\n     */\n    com.google.protobuf.ByteString\n        getStringBytes();\n\n    /**\n     * \u003ccode\u003eoptional bytes bytes = 13;\u003c/code\u003e\n     * @return Whether the bytes field is set.\n     */\n    boolean hasBytes();\n    /**\n     * \u003ccode\u003eoptional bytes bytes = 13;\u003c/code\u003e\n     * @return The bytes.\n     */\n    com.google.protobuf.ByteString getBytes();\n  }\n  /**\n   * Protobuf type {@code it.auties.protobuf.ScalarMessage}\n   */\n  public static final class ScalarMessage extends\n      com.google.protobuf.GeneratedMessageV3 implements\n      // @@protoc_insertion_point(message_implements:it.auties.protobuf.ScalarMessage)\n      ScalarMessageOrBuilder {\n  private static final long serialVersionUID = 0L;\n    // Use ScalarMessage.newBuilder() to construct.\n    private ScalarMessage(com.google.protobuf.GeneratedMessageV3.Builder\u003c?\u003e builder) {\n      super(builder);\n    }\n    private ScalarMessage() {\n      string_ = \"\";\n      bytes_ = com.google.protobuf.ByteString.EMPTY;\n    }\n\n    @java.lang.Override\n    @SuppressWarnings({\"unused\"})\n    protected java.lang.Object newInstance(\n        UnusedPrivateParameter unused) {\n      return new ScalarMessage();\n    }\n\n    public static final com.google.protobuf.Descriptors.Descriptor\n        getDescriptor() {\n      return it.auties.protobuf.Scalar.internal_static_it_auties_protobuf_ScalarMessage_descriptor;\n    }\n\n    @java.lang.Override\n    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable\n        internalGetFieldAccessorTable() {\n      return it.auties.protobuf.Scalar.internal_static_it_auties_protobuf_ScalarMessage_fieldAccessorTable\n          .ensureFieldAccessorsInitialized(\n              it.auties.protobuf.Scalar.ScalarMessage.class, it.auties.protobuf.Scalar.ScalarMessage.Builder.class);\n    }\n\n    private int bitField0_;\n    public static final int FIXED32_FIELD_NUMBER = 1;\n    private int fixed32_ = 0;\n    /**\n     * \u003ccode\u003eoptional fixed32 fixed32 = 1;\u003c/code\u003e\n     * @return Whether the fixed32 field is set.\n     */\n    @java.lang.Override\n    public boolean hasFixed32() {\n      return ((bitField0_ \u0026 0x00000001) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional fixed32 fixed32 = 1;\u003c/code\u003e\n     * @return The fixed32.\n     */\n    @java.lang.Override\n    public int getFixed32() {\n      return fixed32_;\n    }\n\n    public static final int SFIXED32_FIELD_NUMBER = 2;\n    private int sfixed32_ = 0;\n    /**\n     * \u003ccode\u003eoptional sfixed32 sfixed32 = 2;\u003c/code\u003e\n     * @return Whether the sfixed32 field is set.\n     */\n    @java.lang.Override\n    public boolean hasSfixed32() {\n      return ((bitField0_ \u0026 0x00000002) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional sfixed32 sfixed32 = 2;\u003c/code\u003e\n     * @return The sfixed32.\n     */\n    @java.lang.Override\n    public int getSfixed32() {\n      return sfixed32_;\n    }\n\n    public static final int INT32_FIELD_NUMBER = 3;\n    private int int32_ = 0;\n    /**\n     * \u003ccode\u003eoptional int32 int32 = 3;\u003c/code\u003e\n     * @return Whether the int32 field is set.\n     */\n    @java.lang.Override\n    public boolean hasInt32() {\n      return ((bitField0_ \u0026 0x00000004) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional int32 int32 = 3;\u003c/code\u003e\n     * @return The int32.\n     */\n    @java.lang.Override\n    public int getInt32() {\n      return int32_;\n    }\n\n    public static final int UINT32_FIELD_NUMBER = 4;\n    private int uint32_ = 0;\n    /**\n     * \u003ccode\u003eoptional uint32 uint32 = 4;\u003c/code\u003e\n     * @return Whether the uint32 field is set.\n     */\n    @java.lang.Override\n    public boolean hasUint32() {\n      return ((bitField0_ \u0026 0x00000008) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional uint32 uint32 = 4;\u003c/code\u003e\n     * @return The uint32.\n     */\n    @java.lang.Override\n    public int getUint32() {\n      return uint32_;\n    }\n\n    public static final int FIXED64_FIELD_NUMBER = 5;\n    private long fixed64_ = 0L;\n    /**\n     * \u003ccode\u003eoptional fixed64 fixed64 = 5;\u003c/code\u003e\n     * @return Whether the fixed64 field is set.\n     */\n    @java.lang.Override\n    public boolean hasFixed64() {\n      return ((bitField0_ \u0026 0x00000010) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional fixed64 fixed64 = 5;\u003c/code\u003e\n     * @return The fixed64.\n     */\n    @java.lang.Override\n    public long getFixed64() {\n      return fixed64_;\n    }\n\n    public static final int SFIXED64_FIELD_NUMBER = 6;\n    private long sfixed64_ = 0L;\n    /**\n     * \u003ccode\u003eoptional sfixed64 sfixed64 = 6;\u003c/code\u003e\n     * @return Whether the sfixed64 field is set.\n     */\n    @java.lang.Override\n    public boolean hasSfixed64() {\n      return ((bitField0_ \u0026 0x00000020) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional sfixed64 sfixed64 = 6;\u003c/code\u003e\n     * @return The sfixed64.\n     */\n    @java.lang.Override\n    public long getSfixed64() {\n      return sfixed64_;\n    }\n\n    public static final int INT64_FIELD_NUMBER = 7;\n    private long int64_ = 0L;\n    /**\n     * \u003ccode\u003eoptional int64 int64 = 7;\u003c/code\u003e\n     * @return Whether the int64 field is set.\n     */\n    @java.lang.Override\n    public boolean hasInt64() {\n      return ((bitField0_ \u0026 0x00000040) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional int64 int64 = 7;\u003c/code\u003e\n     * @return The int64.\n     */\n    @java.lang.Override\n    public long getInt64() {\n      return int64_;\n    }\n\n    public static final int UINT64_FIELD_NUMBER = 8;\n    private long uint64_ = 0L;\n    /**\n     * \u003ccode\u003eoptional uint64 uint64 = 8;\u003c/code\u003e\n     * @return Whether the uint64 field is set.\n     */\n    @java.lang.Override\n    public boolean hasUint64() {\n      return ((bitField0_ \u0026 0x00000080) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional uint64 uint64 = 8;\u003c/code\u003e\n     * @return The uint64.\n     */\n    @java.lang.Override\n    public long getUint64() {\n      return uint64_;\n    }\n\n    public static final int FLOAT_FIELD_NUMBER = 9;\n    private float float_ = 0F;\n    /**\n     * \u003ccode\u003eoptional float float = 9;\u003c/code\u003e\n     * @return Whether the float field is set.\n     */\n    @java.lang.Override\n    public boolean hasFloat() {\n      return ((bitField0_ \u0026 0x00000100) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional float float = 9;\u003c/code\u003e\n     * @return The float.\n     */\n    @java.lang.Override\n    public float getFloat() {\n      return float_;\n    }\n\n    public static final int DOUBLE_FIELD_NUMBER = 10;\n    private double double_ = 0D;\n    /**\n     * \u003ccode\u003eoptional double double = 10;\u003c/code\u003e\n     * @return Whether the double field is set.\n     */\n    @java.lang.Override\n    public boolean hasDouble() {\n      return ((bitField0_ \u0026 0x00000200) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional double double = 10;\u003c/code\u003e\n     * @return The double.\n     */\n    @java.lang.Override\n    public double getDouble() {\n      return double_;\n    }\n\n    public static final int BOOL_FIELD_NUMBER = 11;\n    private boolean bool_ = false;\n    /**\n     * \u003ccode\u003eoptional bool bool = 11;\u003c/code\u003e\n     * @return Whether the bool field is set.\n     */\n    @java.lang.Override\n    public boolean hasBool() {\n      return ((bitField0_ \u0026 0x00000400) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional bool bool = 11;\u003c/code\u003e\n     * @return The bool.\n     */\n    @java.lang.Override\n    public boolean getBool() {\n      return bool_;\n    }\n\n    public static final int STRING_FIELD_NUMBER = 12;\n    @SuppressWarnings(\"serial\")\n    private volatile java.lang.Object string_ = \"\";\n    /**\n     * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n     * @return Whether the string field is set.\n     */\n    @java.lang.Override\n    public boolean hasString() {\n      return ((bitField0_ \u0026 0x00000800) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n     * @return The string.\n     */\n    @java.lang.Override\n    public java.lang.String getString() {\n      java.lang.Object ref = string_;\n      if (ref instanceof java.lang.String) {\n        return (java.lang.String) ref;\n      } else {\n        com.google.protobuf.ByteString bs = \n            (com.google.protobuf.ByteString) ref;\n        java.lang.String s = bs.toStringUtf8();\n        if (bs.isValidUtf8()) {\n          string_ = s;\n        }\n        return s;\n      }\n    }\n    /**\n     * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n     * @return The bytes for string.\n     */\n    @java.lang.Override\n    public com.google.protobuf.ByteString\n        getStringBytes() {\n      java.lang.Object ref = string_;\n      if (ref instanceof java.lang.String) {\n        com.google.protobuf.ByteString b = \n            com.google.protobuf.ByteString.copyFromUtf8(\n                (java.lang.String) ref);\n        string_ = b;\n        return b;\n      } else {\n        return (com.google.protobuf.ByteString) ref;\n      }\n    }\n\n    public static final int BYTES_FIELD_NUMBER = 13;\n    private com.google.protobuf.ByteString bytes_ = com.google.protobuf.ByteString.EMPTY;\n    /**\n     * \u003ccode\u003eoptional bytes bytes = 13;\u003c/code\u003e\n     * @return Whether the bytes field is set.\n     */\n    @java.lang.Override\n    public boolean hasBytes() {\n      return ((bitField0_ \u0026 0x00001000) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional bytes bytes = 13;\u003c/code\u003e\n     * @return The bytes.\n     */\n    @java.lang.Override\n    public com.google.protobuf.ByteString getBytes() {\n      return bytes_;\n    }\n\n    private byte memoizedIsInitialized = -1;\n    @java.lang.Override\n    public final boolean isInitialized() {\n      byte isInitialized = memoizedIsInitialized;\n      if (isInitialized == 1) return true;\n      if (isInitialized == 0) return false;\n\n      memoizedIsInitialized = 1;\n      return true;\n    }\n\n    @java.lang.Override\n    public void writeTo(com.google.protobuf.CodedOutputStream output)\n                        throws java.io.IOException {\n      if (((bitField0_ \u0026 0x00000001) != 0)) {\n        output.writeFixed32(1, fixed32_);\n      }\n      if (((bitField0_ \u0026 0x00000002) != 0)) {\n        output.writeSFixed32(2, sfixed32_);\n      }\n      if (((bitField0_ \u0026 0x00000004) != 0)) {\n        output.writeInt32(3, int32_);\n      }\n      if (((bitField0_ \u0026 0x00000008) != 0)) {\n        output.writeUInt32(4, uint32_);\n      }\n      if (((bitField0_ \u0026 0x00000010) != 0)) {\n        output.writeFixed64(5, fixed64_);\n      }\n      if (((bitField0_ \u0026 0x00000020) != 0)) {\n        output.writeSFixed64(6, sfixed64_);\n      }\n      if (((bitField0_ \u0026 0x00000040) != 0)) {\n        output.writeInt64(7, int64_);\n      }\n      if (((bitField0_ \u0026 0x00000080) != 0)) {\n        output.writeUInt64(8, uint64_);\n      }\n      if (((bitField0_ \u0026 0x00000100) != 0)) {\n        output.writeFloat(9, float_);\n      }\n      if (((bitField0_ \u0026 0x00000200) != 0)) {\n        output.writeDouble(10, double_);\n      }\n      if (((bitField0_ \u0026 0x00000400) != 0)) {\n        output.writeBool(11, bool_);\n      }\n      if (((bitField0_ \u0026 0x00000800) != 0)) {\n        com.google.protobuf.GeneratedMessageV3.writeString(output, 12, string_);\n      }\n      if (((bitField0_ \u0026 0x00001000) != 0)) {\n        output.writeBytes(13, bytes_);\n      }\n      getUnknownFields().writeTo(output);\n    }\n\n    @java.lang.Override\n    public int getSerializedSize() {\n      int size = memoizedSize;\n      if (size != -1) return size;\n\n      size = 0;\n      if (((bitField0_ \u0026 0x00000001) != 0)) {\n        size += com.google.protobuf.CodedOutputStream\n          .computeFixed32Size(1, fixed32_);\n      }\n      if (((bitField0_ \u0026 0x00000002) != 0)) {\n        size += com.google.protobuf.CodedOutputStream\n          .computeSFixed32Size(2, sfixed32_);\n      }\n      if (((bitField0_ \u0026 0x00000004) != 0)) {\n        size += com.google.protobuf.CodedOutputStream\n          .computeInt32Size(3, int32_);\n      }\n      if (((bitField0_ \u0026 0x00000008) != 0)) {\n        size += com.google.protobuf.CodedOutputStream\n          .computeUInt32Size(4, uint32_);\n      }\n      if (((bitField0_ \u0026 0x00000010) != 0)) {\n        size += com.google.protobuf.CodedOutputStream\n          .computeFixed64Size(5, fixed64_);\n      }\n      if (((bitField0_ \u0026 0x00000020) != 0)) {\n        size += com.google.protobuf.CodedOutputStream\n          .computeSFixed64Size(6, sfixed64_);\n      }\n      if (((bitField0_ \u0026 0x00000040) != 0)) {\n        size += com.google.protobuf.CodedOutputStream\n          .computeInt64Size(7, int64_);\n      }\n      if (((bitField0_ \u0026 0x00000080) != 0)) {\n        size += com.google.protobuf.CodedOutputStream\n          .computeUInt64Size(8, uint64_);\n      }\n      if (((bitField0_ \u0026 0x00000100) != 0)) {\n        size += com.google.protobuf.CodedOutputStream\n          .computeFloatSize(9, float_);\n      }\n      if (((bitField0_ \u0026 0x00000200) != 0)) {\n        size += com.google.protobuf.CodedOutputStream\n          .computeDoubleSize(10, double_);\n      }\n      if (((bitField0_ \u0026 0x00000400) != 0)) {\n        size += com.google.protobuf.CodedOutputStream\n          .computeBoolSize(11, bool_);\n      }\n      if (((bitField0_ \u0026 0x00000800) != 0)) {\n        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, string_);\n      }\n      if (((bitField0_ \u0026 0x00001000) != 0)) {\n        size += com.google.protobuf.CodedOutputStream\n          .computeBytesSize(13, bytes_);\n      }\n      size += getUnknownFields().getSerializedSize();\n      memoizedSize = size;\n      return size;\n    }\n\n    @java.lang.Override\n    public boolean equals(final java.lang.Object obj) {\n      if (obj == this) {\n       return true;\n      }\n      if (!(obj instanceof it.auties.protobuf.Scalar.ScalarMessage)) {\n        return super.equals(obj);\n      }\n      it.auties.protobuf.Scalar.ScalarMessage other = (it.auties.protobuf.Scalar.ScalarMessage) obj;\n\n      if (hasFixed32() != other.hasFixed32()) return false;\n      if (hasFixed32()) {\n        if (getFixed32()\n            != other.getFixed32()) return false;\n      }\n      if (hasSfixed32() != other.hasSfixed32()) return false;\n      if (hasSfixed32()) {\n        if (getSfixed32()\n            != other.getSfixed32()) return false;\n      }\n      if (hasInt32() != other.hasInt32()) return false;\n      if (hasInt32()) {\n        if (getInt32()\n            != other.getInt32()) return false;\n      }\n      if (hasUint32() != other.hasUint32()) return false;\n      if (hasUint32()) {\n        if (getUint32()\n            != other.getUint32()) return false;\n      }\n      if (hasFixed64() != other.hasFixed64()) return false;\n      if (hasFixed64()) {\n        if (getFixed64()\n            != other.getFixed64()) return false;\n      }\n      if (hasSfixed64() != other.hasSfixed64()) return false;\n      if (hasSfixed64()) {\n        if (getSfixed64()\n            != other.getSfixed64()) return false;\n      }\n      if (hasInt64() != other.hasInt64()) return false;\n      if (hasInt64()) {\n        if (getInt64()\n            != other.getInt64()) return false;\n      }\n      if (hasUint64() != other.hasUint64()) return false;\n      if (hasUint64()) {\n        if (getUint64()\n            != other.getUint64()) return false;\n      }\n      if (hasFloat() != other.hasFloat()) return false;\n      if (hasFloat()) {\n        if (java.lang.Float.floatToIntBits(getFloat())\n            != java.lang.Float.floatToIntBits(\n                other.getFloat())) return false;\n      }\n      if (hasDouble() != other.hasDouble()) return false;\n      if (hasDouble()) {\n        if (java.lang.Double.doubleToLongBits(getDouble())\n            != java.lang.Double.doubleToLongBits(\n                other.getDouble())) return false;\n      }\n      if (hasBool() != other.hasBool()) return false;\n      if (hasBool()) {\n        if (getBool()\n            != other.getBool()) return false;\n      }\n      if (hasString() != other.hasString()) return false;\n      if (hasString()) {\n        if (!getString()\n            .equals(other.getString())) return false;\n      }\n      if (hasBytes() != other.hasBytes()) return false;\n      if (hasBytes()) {\n        if (!getBytes()\n            .equals(other.getBytes())) return false;\n      }\n      if (!getUnknownFields().equals(other.getUnknownFields())) return false;\n      return true;\n    }\n\n    @java.lang.Override\n    public int hashCode() {\n      if (memoizedHashCode != 0) {\n        return memoizedHashCode;\n      }\n      int hash = 41;\n      hash = (19 * hash) + getDescriptor().hashCode();\n      if (hasFixed32()) {\n        hash = (37 * hash) + FIXED32_FIELD_NUMBER;\n        hash = (53 * hash) + getFixed32();\n      }\n      if (hasSfixed32()) {\n        hash = (37 * hash) + SFIXED32_FIELD_NUMBER;\n        hash = (53 * hash) + getSfixed32();\n      }\n      if (hasInt32()) {\n        hash = (37 * hash) + INT32_FIELD_NUMBER;\n        hash = (53 * hash) + getInt32();\n      }\n      if (hasUint32()) {\n        hash = (37 * hash) + UINT32_FIELD_NUMBER;\n        hash = (53 * hash) + getUint32();\n      }\n      if (hasFixed64()) {\n        hash = (37 * hash) + FIXED64_FIELD_NUMBER;\n        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(\n            getFixed64());\n      }\n      if (hasSfixed64()) {\n        hash = (37 * hash) + SFIXED64_FIELD_NUMBER;\n        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(\n            getSfixed64());\n      }\n      if (hasInt64()) {\n        hash = (37 * hash) + INT64_FIELD_NUMBER;\n        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(\n            getInt64());\n      }\n      if (hasUint64()) {\n        hash = (37 * hash) + UINT64_FIELD_NUMBER;\n        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(\n            getUint64());\n      }\n      if (hasFloat()) {\n        hash = (37 * hash) + FLOAT_FIELD_NUMBER;\n        hash = (53 * hash) + java.lang.Float.floatToIntBits(\n            getFloat());\n      }\n      if (hasDouble()) {\n        hash = (37 * hash) + DOUBLE_FIELD_NUMBER;\n        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(\n            java.lang.Double.doubleToLongBits(getDouble()));\n      }\n      if (hasBool()) {\n        hash = (37 * hash) + BOOL_FIELD_NUMBER;\n        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(\n            getBool());\n      }\n      if (hasString()) {\n        hash = (37 * hash) + STRING_FIELD_NUMBER;\n        hash = (53 * hash) + getString().hashCode();\n      }\n      if (hasBytes()) {\n        hash = (37 * hash) + BYTES_FIELD_NUMBER;\n        hash = (53 * hash) + getBytes().hashCode();\n      }\n      hash = (29 * hash) + getUnknownFields().hashCode();\n      memoizedHashCode = hash;\n      return hash;\n    }\n\n    public static it.auties.protobuf.Scalar.ScalarMessage parseFrom(\n        java.nio.ByteBuffer data)\n        throws com.google.protobuf.InvalidProtocolBufferException {\n      return PARSER.parseFrom(data);\n    }\n    public static it.auties.protobuf.Scalar.ScalarMessage parseFrom(\n        java.nio.ByteBuffer data,\n        com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n        throws com.google.protobuf.InvalidProtocolBufferException {\n      return PARSER.parseFrom(data, extensionRegistry);\n    }\n    public static it.auties.protobuf.Scalar.ScalarMessage parseFrom(\n        com.google.protobuf.ByteString data)\n        throws com.google.protobuf.InvalidProtocolBufferException {\n      return PARSER.parseFrom(data);\n    }\n    public static it.auties.protobuf.Scalar.ScalarMessage parseFrom(\n        com.google.protobuf.ByteString data,\n        com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n        throws com.google.protobuf.InvalidProtocolBufferException {\n      return PARSER.parseFrom(data, extensionRegistry);\n    }\n    public static it.auties.protobuf.Scalar.ScalarMessage parseFrom(byte[] data)\n        throws com.google.protobuf.InvalidProtocolBufferException {\n      return PARSER.parseFrom(data);\n    }\n    public static it.auties.protobuf.Scalar.ScalarMessage parseFrom(\n        byte[] data,\n        com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n        throws com.google.protobuf.InvalidProtocolBufferException {\n      return PARSER.parseFrom(data, extensionRegistry);\n    }\n    public static it.auties.protobuf.Scalar.ScalarMessage parseFrom(java.io.InputStream input)\n        throws java.io.IOException {\n      return com.google.protobuf.GeneratedMessageV3\n          .parseWithIOException(PARSER, input);\n    }\n    public static it.auties.protobuf.Scalar.ScalarMessage parseFrom(\n        java.io.InputStream input,\n        com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n        throws java.io.IOException {\n      return com.google.protobuf.GeneratedMessageV3\n          .parseWithIOException(PARSER, input, extensionRegistry);\n    }\n\n    public static it.auties.protobuf.Scalar.ScalarMessage parseDelimitedFrom(java.io.InputStream input)\n        throws java.io.IOException {\n      return com.google.protobuf.GeneratedMessageV3\n          .parseDelimitedWithIOException(PARSER, input);\n    }\n\n    public static it.auties.protobuf.Scalar.ScalarMessage parseDelimitedFrom(\n        java.io.InputStream input,\n        com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n        throws java.io.IOException {\n      return com.google.protobuf.GeneratedMessageV3\n          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);\n    }\n    public static it.auties.protobuf.Scalar.ScalarMessage parseFrom(\n        com.google.protobuf.CodedInputStream input)\n        throws java.io.IOException {\n      return com.google.protobuf.GeneratedMessageV3\n          .parseWithIOException(PARSER, input);\n    }\n    public static it.auties.protobuf.Scalar.ScalarMessage parseFrom(\n        com.google.protobuf.CodedInputStream input,\n        com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n        throws java.io.IOException {\n      return com.google.protobuf.GeneratedMessageV3\n          .parseWithIOException(PARSER, input, extensionRegistry);\n    }\n\n    @java.lang.Override\n    public Builder newBuilderForType() { return newBuilder(); }\n    public static Builder newBuilder() {\n      return DEFAULT_INSTANCE.toBuilder();\n    }\n    public static Builder newBuilder(it.auties.protobuf.Scalar.ScalarMessage prototype) {\n      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);\n    }\n    @java.lang.Override\n    public Builder toBuilder() {\n      return this == DEFAULT_INSTANCE\n          ? new Builder() : new Builder().mergeFrom(this);\n    }\n\n    @java.lang.Override\n    protected Builder newBuilderForType(\n        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {\n      Builder builder = new Builder(parent);\n      return builder;\n    }\n    /**\n     * Protobuf type {@code it.auties.protobuf.ScalarMessage}\n     */\n    public static final class Builder extends\n        com.google.protobuf.GeneratedMessageV3.Builder\u003cBuilder\u003e implements\n        // @@protoc_insertion_point(builder_implements:it.auties.protobuf.ScalarMessage)\n        it.auties.protobuf.Scalar.ScalarMessageOrBuilder {\n      public static final com.google.protobuf.Descriptors.Descriptor\n          getDescriptor() {\n        return it.auties.protobuf.Scalar.internal_static_it_auties_protobuf_ScalarMessage_descriptor;\n      }\n\n      @java.lang.Override\n      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable\n          internalGetFieldAccessorTable() {\n        return it.auties.protobuf.Scalar.internal_static_it_auties_protobuf_ScalarMessage_fieldAccessorTable\n            .ensureFieldAccessorsInitialized(\n                it.auties.protobuf.Scalar.ScalarMessage.class, it.auties.protobuf.Scalar.ScalarMessage.Builder.class);\n      }\n\n      // Construct using it.auties.protobuf.Scalar.ScalarMessage.newBuilder()\n      private Builder() {\n\n      }\n\n      private Builder(\n          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {\n        super(parent);\n\n      }\n      @java.lang.Override\n      public Builder clear() {\n        super.clear();\n        bitField0_ = 0;\n        fixed32_ = 0;\n        sfixed32_ = 0;\n        int32_ = 0;\n        uint32_ = 0;\n        fixed64_ = 0L;\n        sfixed64_ = 0L;\n        int64_ = 0L;\n        uint64_ = 0L;\n        float_ = 0F;\n        double_ = 0D;\n        bool_ = false;\n        string_ = \"\";\n        bytes_ = com.google.protobuf.ByteString.EMPTY;\n        return this;\n      }\n\n      @java.lang.Override\n      public com.google.protobuf.Descriptors.Descriptor\n          getDescriptorForType() {\n        return it.auties.protobuf.Scalar.internal_static_it_auties_protobuf_ScalarMessage_descriptor;\n      }\n\n      @java.lang.Override\n      public it.auties.protobuf.Scalar.ScalarMessage getDefaultInstanceForType() {\n        return it.auties.protobuf.Scalar.ScalarMessage.getDefaultInstance();\n      }\n\n      @java.lang.Override\n      public it.auties.protobuf.Scalar.ScalarMessage build() {\n        it.auties.protobuf.Scalar.ScalarMessage result = buildPartial();\n        if (!result.isInitialized()) {\n          throw newUninitializedMessageException(result);\n        }\n        return result;\n      }\n\n      @java.lang.Override\n      public it.auties.protobuf.Scalar.ScalarMessage buildPartial() {\n        it.auties.protobuf.Scalar.ScalarMessage result = new it.auties.protobuf.Scalar.ScalarMessage(this);\n        if (bitField0_ != 0) { buildPartial0(result); }\n        onBuilt();\n        return result;\n      }\n\n      private void buildPartial0(it.auties.protobuf.Scalar.ScalarMessage result) {\n        int from_bitField0_ = bitField0_;\n        int to_bitField0_ = 0;\n        if (((from_bitField0_ \u0026 0x00000001) != 0)) {\n          result.fixed32_ = fixed32_;\n          to_bitField0_ |= 0x00000001;\n        }\n        if (((from_bitField0_ \u0026 0x00000002) != 0)) {\n          result.sfixed32_ = sfixed32_;\n          to_bitField0_ |= 0x00000002;\n        }\n        if (((from_bitField0_ \u0026 0x00000004) != 0)) {\n          result.int32_ = int32_;\n          to_bitField0_ |= 0x00000004;\n        }\n        if (((from_bitField0_ \u0026 0x00000008) != 0)) {\n          result.uint32_ = uint32_;\n          to_bitField0_ |= 0x00000008;\n        }\n        if (((from_bitField0_ \u0026 0x00000010) != 0)) {\n          result.fixed64_ = fixed64_;\n          to_bitField0_ |= 0x00000010;\n        }\n        if (((from_bitField0_ \u0026 0x00000020) != 0)) {\n          result.sfixed64_ = sfixed64_;\n          to_bitField0_ |= 0x00000020;\n        }\n        if (((from_bitField0_ \u0026 0x00000040) != 0)) {\n          result.int64_ = int64_;\n          to_bitField0_ |= 0x00000040;\n        }\n        if (((from_bitField0_ \u0026 0x00000080) != 0)) {\n          result.uint64_ = uint64_;\n          to_bitField0_ |= 0x00000080;\n        }\n        if (((from_bitField0_ \u0026 0x00000100) != 0)) {\n          result.float_ = float_;\n          to_bitField0_ |= 0x00000100;\n        }\n        if (((from_bitField0_ \u0026 0x00000200) != 0)) {\n          result.double_ = double_;\n          to_bitField0_ |= 0x00000200;\n        }\n        if (((from_bitField0_ \u0026 0x00000400) != 0)) {\n          result.bool_ = bool_;\n          to_bitField0_ |= 0x00000400;\n        }\n        if (((from_bitField0_ \u0026 0x00000800) != 0)) {\n          result.string_ = string_;\n          to_bitField0_ |= 0x00000800;\n        }\n        if (((from_bitField0_ \u0026 0x00001000) != 0)) {\n          result.bytes_ = bytes_;\n          to_bitField0_ |= 0x00001000;\n        }\n        result.bitField0_ |= to_bitField0_;\n      }\n\n      @java.lang.Override\n      public Builder clone() {\n        return super.clone();\n      }\n      @java.lang.Override\n      public Builder setField(\n          com.google.protobuf.Descriptors.FieldDescriptor field,\n          java.lang.Object value) {\n        return super.setField(field, value);\n      }\n      @java.lang.Override\n      public Builder clearField(\n          com.google.protobuf.Descriptors.FieldDescriptor field) {\n        return super.clearField(field);\n      }\n      @java.lang.Override\n      public Builder clearOneof(\n          com.google.protobuf.Descriptors.OneofDescriptor oneof) {\n        return super.clearOneof(oneof);\n      }\n      @java.lang.Override\n      public Builder setRepeatedField(\n          com.google.protobuf.Descriptors.FieldDescriptor field,\n          int index, java.lang.Object value) {\n        return super.setRepeatedField(field, index, value);\n      }\n      @java.lang.Override\n      public Builder addRepeatedField(\n          com.google.protobuf.Descriptors.FieldDescriptor field,\n          java.lang.Object value) {\n        return super.addRepeatedField(field, value);\n      }\n      @java.lang.Override\n      public Builder mergeFrom(com.google.protobuf.Message other) {\n        if (other instanceof it.auties.protobuf.Scalar.ScalarMessage) {\n          return mergeFrom((it.auties.protobuf.Scalar.ScalarMessage)other);\n        } else {\n          super.mergeFrom(other);\n          return this;\n        }\n      }\n\n      public Builder mergeFrom(it.auties.protobuf.Scalar.ScalarMessage other) {\n        if (other == it.auties.protobuf.Scalar.ScalarMessage.getDefaultInstance()) return this;\n        if (other.hasFixed32()) {\n          setFixed32(other.getFixed32());\n        }\n        if (other.hasSfixed32()) {\n          setSfixed32(other.getSfixed32());\n        }\n        if (other.hasInt32()) {\n          setInt32(other.getInt32());\n        }\n        if (other.hasUint32()) {\n          setUint32(other.getUint32());\n        }\n        if (other.hasFixed64()) {\n          setFixed64(other.getFixed64());\n        }\n        if (other.hasSfixed64()) {\n          setSfixed64(other.getSfixed64());\n        }\n        if (other.hasInt64()) {\n          setInt64(other.getInt64());\n        }\n        if (other.hasUint64()) {\n          setUint64(other.getUint64());\n        }\n        if (other.hasFloat()) {\n          setFloat(other.getFloat());\n        }\n        if (other.hasDouble()) {\n          setDouble(other.getDouble());\n        }\n        if (other.hasBool()) {\n          setBool(other.getBool());\n        }\n        if (other.hasString()) {\n          string_ = other.string_;\n          bitField0_ |= 0x00000800;\n          onChanged();\n        }\n        if (other.hasBytes()) {\n          setBytes(other.getBytes());\n        }\n        this.mergeUnknownFields(other.getUnknownFields());\n        onChanged();\n        return this;\n      }\n\n      @java.lang.Override\n      public final boolean isInitialized() {\n        return true;\n      }\n\n      @java.lang.Override\n      public Builder mergeFrom(\n          com.google.protobuf.CodedInputStream input,\n          com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n          throws java.io.IOException {\n        if (extensionRegistry == null) {\n          throw new java.lang.NullPointerException();\n        }\n        try {\n          boolean done = false;\n          while (!done) {\n            int tag = input.readTag();\n            switch (tag) {\n              case 0:\n                done = true;\n                break;\n              case 13: {\n                fixed32_ = input.readFixed32();\n                bitField0_ |= 0x00000001;\n                break;\n              } // case 13\n              case 21: {\n                sfixed32_ = input.readSFixed32();\n                bitField0_ |= 0x00000002;\n                break;\n              } // case 21\n              case 24: {\n                int32_ = input.readInt32();\n                bitField0_ |= 0x00000004;\n                break;\n              } // case 24\n              case 32: {\n                uint32_ = input.readUInt32();\n                bitField0_ |= 0x00000008;\n                break;\n              } // case 32\n              case 41: {\n                fixed64_ = input.readFixed64();\n                bitField0_ |= 0x00000010;\n                break;\n              } // case 41\n              case 49: {\n                sfixed64_ = input.readSFixed64();\n                bitField0_ |= 0x00000020;\n                break;\n              } // case 49\n              case 56: {\n                int64_ = input.readInt64();\n                bitField0_ |= 0x00000040;\n                break;\n              } // case 56\n              case 64: {\n                uint64_ = input.readUInt64();\n                bitField0_ |= 0x00000080;\n                break;\n              } // case 64\n              case 77: {\n                float_ = input.readFloat();\n                bitField0_ |= 0x00000100;\n                break;\n              } // case 77\n              case 81: {\n                double_ = input.readDouble();\n                bitField0_ |= 0x00000200;\n                break;\n              } // case 81\n              case 88: {\n                bool_ = input.readBool();\n                bitField0_ |= 0x00000400;\n                break;\n              } // case 88\n              case 98: {\n                string_ = input.readBytes();\n                bitField0_ |= 0x00000800;\n                break;\n              } // case 98\n              case 106: {\n                bytes_ = input.readBytes();\n                bitField0_ |= 0x00001000;\n                break;\n              } // case 106\n              default: {\n                if (!super.parseUnknownField(input, extensionRegistry, tag)) {\n                  done = true; // was an endgroup tag\n                }\n                break;\n              } // default:\n            } // switch (tag)\n          } // while (!done)\n        } catch (com.google.protobuf.InvalidProtocolBufferException e) {\n          throw e.unwrapIOException();\n        } finally {\n          onChanged();\n        } // finally\n        return this;\n      }\n      private int bitField0_;\n\n      private int fixed32_ ;\n      /**\n       * \u003ccode\u003eoptional fixed32 fixed32 = 1;\u003c/code\u003e\n       * @return Whether the fixed32 field is set.\n       */\n      @java.lang.Override\n      public boolean hasFixed32() {\n        return ((bitField0_ \u0026 0x00000001) != 0);\n      }\n      /**\n       * \u003ccode\u003eoptional fixed32 fixed32 = 1;\u003c/code\u003e\n       * @return The fixed32.\n       */\n      @java.lang.Override\n      public int getFixed32() {\n        return fixed32_;\n      }\n      /**\n       * \u003ccode\u003eoptional fixed32 fixed32 = 1;\u003c/code\u003e\n       * @param value The fixed32 to set.\n       * @return This builder for chaining.\n       */\n      public Builder setFixed32(int value) {\n\n        fixed32_ = value;\n        bitField0_ |= 0x00000001;\n        onChanged();\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional fixed32 fixed32 = 1;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearFixed32() {\n        bitField0_ = (bitField0_ \u0026 ~0x00000001);\n        fixed32_ = 0;\n        onChanged();\n        return this;\n      }\n\n      private int sfixed32_ ;\n      /**\n       * \u003ccode\u003eoptional sfixed32 sfixed32 = 2;\u003c/code\u003e\n       * @return Whether the sfixed32 field is set.\n       */\n      @java.lang.Override\n      public boolean hasSfixed32() {\n        return ((bitField0_ \u0026 0x00000002) != 0);\n      }\n      /**\n       * \u003ccode\u003eoptional sfixed32 sfixed32 = 2;\u003c/code\u003e\n       * @return The sfixed32.\n       */\n      @java.lang.Override\n      public int getSfixed32() {\n        return sfixed32_;\n      }\n      /**\n       * \u003ccode\u003eoptional sfixed32 sfixed32 = 2;\u003c/code\u003e\n       * @param value The sfixed32 to set.\n       * @return This builder for chaining.\n       */\n      public Builder setSfixed32(int value) {\n\n        sfixed32_ = value;\n        bitField0_ |= 0x00000002;\n        onChanged();\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional sfixed32 sfixed32 = 2;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearSfixed32() {\n        bitField0_ = (bitField0_ \u0026 ~0x00000002);\n        sfixed32_ = 0;\n        onChanged();\n        return this;\n      }\n\n      private int int32_ ;\n      /**\n       * \u003ccode\u003eoptional int32 int32 = 3;\u003c/code\u003e\n       * @return Whether the int32 field is set.\n       */\n      @java.lang.Override\n      public boolean hasInt32() {\n        return ((bitField0_ \u0026 0x00000004) != 0);\n      }\n      /**\n       * \u003ccode\u003eoptional int32 int32 = 3;\u003c/code\u003e\n       * @return The int32.\n       */\n      @java.lang.Override\n      public int getInt32() {\n        return int32_;\n      }\n      /**\n       * \u003ccode\u003eoptional int32 int32 = 3;\u003c/code\u003e\n       * @param value The int32 to set.\n       * @return This builder for chaining.\n       */\n      public Builder setInt32(int value) {\n\n        int32_ = value;\n        bitField0_ |= 0x00000004;\n        onChanged();\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional int32 int32 = 3;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearInt32() {\n        bitField0_ = (bitField0_ \u0026 ~0x00000004);\n        int32_ = 0;\n        onChanged();\n        return this;\n      }\n\n      private int uint32_ ;\n      /**\n       * \u003ccode\u003eoptional uint32 uint32 = 4;\u003c/code\u003e\n       * @return Whether the uint32 field is set.\n       */\n      @java.lang.Override\n      public boolean hasUint32() {\n        return ((bitField0_ \u0026 0x00000008) != 0);\n      }\n      /**\n       * \u003ccode\u003eoptional uint32 uint32 = 4;\u003c/code\u003e\n       * @return The uint32.\n       */\n      @java.lang.Override\n      public int getUint32() {\n        return uint32_;\n      }\n      /**\n       * \u003ccode\u003eoptional uint32 uint32 = 4;\u003c/code\u003e\n       * @param value The uint32 to set.\n       * @return This builder for chaining.\n       */\n      public Builder setUint32(int value) {\n\n        uint32_ = value;\n        bitField0_ |= 0x00000008;\n        onChanged();\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional uint32 uint32 = 4;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearUint32() {\n        bitField0_ = (bitField0_ \u0026 ~0x00000008);\n        uint32_ = 0;\n        onChanged();\n        return this;\n      }\n\n      private long fixed64_ ;\n      /**\n       * \u003ccode\u003eoptional fixed64 fixed64 = 5;\u003c/code\u003e\n       * @return Whether the fixed64 field is set.\n       */\n      @java.lang.Override\n      public boolean hasFixed64() {\n        return ((bitField0_ \u0026 0x00000010) != 0);\n      }\n      /**\n       * \u003ccode\u003eoptional fixed64 fixed64 = 5;\u003c/code\u003e\n       * @return The fixed64.\n       */\n      @java.lang.Override\n      public long getFixed64() {\n        return fixed64_;\n      }\n      /**\n       * \u003ccode\u003eoptional fixed64 fixed64 = 5;\u003c/code\u003e\n       * @param value The fixed64 to set.\n       * @return This builder for chaining.\n       */\n      public Builder setFixed64(long value) {\n\n        fixed64_ = value;\n        bitField0_ |= 0x00000010;\n        onChanged();\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional fixed64 fixed64 = 5;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearFixed64() {\n        bitField0_ = (bitField0_ \u0026 ~0x00000010);\n        fixed64_ = 0L;\n        onChanged();\n        return this;\n      }\n\n      private long sfixed64_ ;\n      /**\n       * \u003ccode\u003eoptional sfixed64 sfixed64 = 6;\u003c/code\u003e\n       * @return Whether the sfixed64 field is set.\n       */\n      @java.lang.Override\n      public boolean hasSfixed64() {\n        return ((bitField0_ \u0026 0x00000020) != 0);\n      }\n      /**\n       * \u003ccode\u003eoptional sfixed64 sfixed64 = 6;\u003c/code\u003e\n       * @return The sfixed64.\n       */\n      @java.lang.Override\n      public long getSfixed64() {\n        return sfixed64_;\n      }\n      /**\n       * \u003ccode\u003eoptional sfixed64 sfixed64 = 6;\u003c/code\u003e\n       * @param value The sfixed64 to set.\n       * @return This builder for chaining.\n       */\n      public Builder setSfixed64(long value) {\n\n        sfixed64_ = value;\n        bitField0_ |= 0x00000020;\n        onChanged();\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional sfixed64 sfixed64 = 6;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearSfixed64() {\n        bitField0_ = (bitField0_ \u0026 ~0x00000020);\n        sfixed64_ = 0L;\n        onChanged();\n        return this;\n      }\n\n      private long int64_ ;\n      /**\n       * \u003ccode\u003eoptional int64 int64 = 7;\u003c/code\u003e\n       * @return Whether the int64 field is set.\n       */\n      @java.lang.Override\n      public boolean hasInt64() {\n        return ((bitField0_ \u0026 0x00000040) != 0);\n      }\n      /**\n       * \u003ccode\u003eoptional int64 int64 = 7;\u003c/code\u003e\n       * @return The int64.\n       */\n      @java.lang.Override\n      public long getInt64() {\n        return int64_;\n      }\n      /**\n       * \u003ccode\u003eoptional int64 int64 = 7;\u003c/code\u003e\n       * @param value The int64 to set.\n       * @return This builder for chaining.\n       */\n      public Builder setInt64(long value) {\n\n        int64_ = value;\n        bitField0_ |= 0x00000040;\n        onChanged();\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional int64 int64 = 7;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearInt64() {\n        bitField0_ = (bitField0_ \u0026 ~0x00000040);\n        int64_ = 0L;\n        onChanged();\n        return this;\n      }\n\n      private long uint64_ ;\n      /**\n       * \u003ccode\u003eoptional uint64 uint64 = 8;\u003c/code\u003e\n       * @return Whether the uint64 field is set.\n       */\n      @java.lang.Override\n      public boolean hasUint64() {\n        return ((bitField0_ \u0026 0x00000080) != 0);\n      }\n      /**\n       * \u003ccode\u003eoptional uint64 uint64 = 8;\u003c/code\u003e\n       * @return The uint64.\n       */\n      @java.lang.Override\n      public long getUint64() {\n        return uint64_;\n      }\n      /**\n       * \u003ccode\u003eoptional uint64 uint64 = 8;\u003c/code\u003e\n       * @param value The uint64 to set.\n       * @return This builder for chaining.\n       */\n      public Builder setUint64(long value) {\n\n        uint64_ = value;\n        bitField0_ |= 0x00000080;\n        onChanged();\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional uint64 uint64 = 8;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearUint64() {\n        bitField0_ = (bitField0_ \u0026 ~0x00000080);\n        uint64_ = 0L;\n        onChanged();\n        return this;\n      }\n\n      private float float_ ;\n      /**\n       * \u003ccode\u003eoptional float float = 9;\u003c/code\u003e\n       * @return Whether the float field is set.\n       */\n      @java.lang.Override\n      public boolean hasFloat() {\n        return ((bitField0_ \u0026 0x00000100) != 0);\n      }\n      /**\n       * \u003ccode\u003eoptional float float = 9;\u003c/code\u003e\n       * @return The float.\n       */\n      @java.lang.Override\n      public float getFloat() {\n        return float_;\n      }\n      /**\n       * \u003ccode\u003eoptional float float = 9;\u003c/code\u003e\n       * @param value The float to set.\n       * @return This builder for chaining.\n       */\n      public Builder setFloat(float value) {\n\n        float_ = value;\n        bitField0_ |= 0x00000100;\n        onChanged();\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional float float = 9;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearFloat() {\n        bitField0_ = (bitField0_ \u0026 ~0x00000100);\n        float_ = 0F;\n        onChanged();\n        return this;\n      }\n\n      private double double_ ;\n      /**\n       * \u003ccode\u003eoptional double double = 10;\u003c/code\u003e\n       * @return Whether the double field is set.\n       */\n      @java.lang.Override\n      public boolean hasDouble() {\n        return ((bitField0_ \u0026 0x00000200) != 0);\n      }\n      /**\n       * \u003ccode\u003eoptional double double = 10;\u003c/code\u003e\n       * @return The double.\n       */\n      @java.lang.Override\n      public double getDouble() {\n        return double_;\n      }\n      /**\n       * \u003ccode\u003eoptional double double = 10;\u003c/code\u003e\n       * @param value The double to set.\n       * @return This builder for chaining.\n       */\n      public Builder setDouble(double value) {\n\n        double_ = value;\n        bitField0_ |= 0x00000200;\n        onChanged();\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional double double = 10;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearDouble() {\n        bitField0_ = (bitField0_ \u0026 ~0x00000200);\n        double_ = 0D;\n        onChanged();\n        return this;\n      }\n\n      private boolean bool_ ;\n      /**\n       * \u003ccode\u003eoptional bool bool = 11;\u003c/code\u003e\n       * @return Whether the bool field is set.\n       */\n      @java.lang.Override\n      public boolean hasBool() {\n        return ((bitField0_ \u0026 0x00000400) != 0);\n      }\n      /**\n       * \u003ccode\u003eoptional bool bool = 11;\u003c/code\u003e\n       * @return The bool.\n       */\n      @java.lang.Override\n      public boolean getBool() {\n        return bool_;\n      }\n      /**\n       * \u003ccode\u003eoptional bool bool = 11;\u003c/code\u003e\n       * @param value The bool to set.\n       * @return This builder for chaining.\n       */\n      public Builder setBool(boolean value) {\n\n        bool_ = value;\n        bitField0_ |= 0x00000400;\n        onChanged();\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional bool bool = 11;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearBool() {\n        bitField0_ = (bitField0_ \u0026 ~0x00000400);\n        bool_ = false;\n        onChanged();\n        return this;\n      }\n\n      private java.lang.Object string_ = \"\";\n      /**\n       * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n       * @return Whether the string field is set.\n       */\n      public boolean hasString() {\n        return ((bitField0_ \u0026 0x00000800) != 0);\n      }\n      /**\n       * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n       * @return The string.\n       */\n      public java.lang.String getString() {\n        java.lang.Object ref = string_;\n        if (!(ref instanceof java.lang.String)) {\n          com.google.protobuf.ByteString bs =\n              (com.google.protobuf.ByteString) ref;\n          java.lang.String s = bs.toStringUtf8();\n          if (bs.isValidUtf8()) {\n            string_ = s;\n          }\n          return s;\n        } else {\n          return (java.lang.String) ref;\n        }\n      }\n      /**\n       * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n       * @return The bytes for string.\n       */\n      public com.google.protobuf.ByteString\n          getStringBytes() {\n        java.lang.Object ref = string_;\n        if (ref instanceof String) {\n          com.google.protobuf.ByteString b = \n              com.google.protobuf.ByteString.copyFromUtf8(\n                  (java.lang.String) ref);\n          string_ = b;\n          return b;\n        } else {\n          return (com.google.protobuf.ByteString) ref;\n        }\n      }\n      /**\n       * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n       * @param value The string to set.\n       * @return This builder for chaining.\n       */\n      public Builder setString(\n          java.lang.String value) {\n        if (value == null) { throw new NullPointerException(); }\n        string_ = value;\n        bitField0_ |= 0x00000800;\n        onChanged();\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearString() {\n        string_ = getDefaultInstance().getString();\n        bitField0_ = (bitField0_ \u0026 ~0x00000800);\n        onChanged();\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n       * @param value The bytes for string to set.\n       * @return This builder for chaining.\n       */\n      public Builder setStringBytes(\n          com.google.protobuf.ByteString value) {\n        if (value == null) { throw new NullPointerException(); }\n        string_ = value;\n        bitField0_ |= 0x00000800;\n        onChanged();\n        return this;\n      }\n\n      private com.google.protobuf.ByteString bytes_ = com.google.protobuf.ByteString.EMPTY;\n      /**\n       * \u003ccode\u003eoptional bytes bytes = 13;\u003c/code\u003e\n       * @return Whether the bytes field is set.\n       */\n      @java.lang.Override\n      public boolean hasBytes() {\n        return ((bitField0_ \u0026 0x00001000) != 0);\n      }\n      /**\n       * \u003ccode\u003eoptional bytes bytes = 13;\u003c/code\u003e\n       * @return The bytes.\n       */\n      @java.lang.Override\n      public com.google.protobuf.ByteString getBytes() {\n        return bytes_;\n      }\n      /**\n       * \u003ccode\u003eoptional bytes bytes = 13;\u003c/code\u003e\n       * @param value The bytes to set.\n       * @return This builder for chaining.\n       */\n      public Builder setBytes(com.google.protobuf.ByteString value) {\n        if (value == null) { throw new NullPointerException(); }\n        bytes_ = value;\n        bitField0_ |= 0x00001000;\n        onChanged();\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional bytes bytes = 13;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearBytes() {\n        bitField0_ = (bitField0_ \u0026 ~0x00001000);\n        bytes_ = getDefaultInstance().getBytes();\n        onChanged();\n        return this;\n      }\n      @java.lang.Override\n      public final Builder setUnknownFields(\n          final com.google.protobuf.UnknownFieldSet unknownFields) {\n        return super.setUnknownFields(unknownFields);\n      }\n\n      @java.lang.Override\n      public final Builder mergeUnknownFields(\n          final com.google.protobuf.UnknownFieldSet unknownFields) {\n        return super.mergeUnknownFields(unknownFields);\n      }\n\n\n      // @@protoc_insertion_point(builder_scope:it.auties.protobuf.ScalarMessage)\n    }\n\n    // @@protoc_insertion_point(class_scope:it.auties.protobuf.ScalarMessage)\n    private static final it.auties.protobuf.Scalar.ScalarMessage DEFAULT_INSTANCE;\n    static {\n      DEFAULT_INSTANCE = new it.auties.protobuf.Scalar.ScalarMessage();\n    }\n\n    public static it.auties.protobuf.Scalar.ScalarMessage getDefaultInstance() {\n      return DEFAULT_INSTANCE;\n    }\n\n    @java.lang.Deprecated public static final com.google.protobuf.Parser\u003cScalarMessage\u003e\n        PARSER = new com.google.protobuf.AbstractParser\u003cScalarMessage\u003e() {\n      @java.lang.Override\n      public ScalarMessage parsePartialFrom(\n          com.google.protobuf.CodedInputStream input,\n          com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n          throws com.google.protobuf.InvalidProtocolBufferException {\n        Builder builder = newBuilder();\n        try {\n          builder.mergeFrom(input, extensionRegistry);\n        } catch (com.google.protobuf.InvalidProtocolBufferException e) {\n          throw e.setUnfinishedMessage(builder.buildPartial());\n        } catch (com.google.protobuf.UninitializedMessageException e) {\n          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());\n        } catch (java.io.IOException e) {\n          throw new com.google.protobuf.InvalidProtocolBufferException(e)\n              .setUnfinishedMessage(builder.buildPartial());\n        }\n        return builder.buildPartial();\n      }\n    };\n\n    public static com.google.protobuf.Parser\u003cScalarMessage\u003e parser() {\n      return PARSER;\n    }\n\n    @java.lang.Override\n    public com.google.protobuf.Parser\u003cScalarMessage\u003e getParserForType() {\n      return PARSER;\n    }\n\n    @java.lang.Override\n    public it.auties.protobuf.Scalar.ScalarMessage getDefaultInstanceForType() {\n      return DEFAULT_INSTANCE;\n    }\n\n  }\n\n  private static final com.google.protobuf.Descriptors.Descriptor\n    internal_static_it_auties_protobuf_ScalarMessage_descriptor;\n  private static final \n    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable\n      internal_static_it_auties_protobuf_ScalarMessage_fieldAccessorTable;\n\n  public static com.google.protobuf.Descriptors.FileDescriptor\n      getDescriptor() {\n    return descriptor;\n  }\n  private static  com.google.protobuf.Descriptors.FileDescriptor\n      descriptor;\n  static {\n    java.lang.String[] descriptorData = {\n      \"\\n\\014scalar.proto\\022\\022it.auties.protobuf\\\"\\337\\001\\n\\rS\" +\n      \"calarMessage\\022\\017\\n\\007fixed32\\030\\001 \\001(\\007\\022\\020\\n\\010sfixed3\" +\n      \"2\\030\\002 \\001(\\017\\022\\r\\n\\005int32\\030\\003 \\001(\\005\\022\\016\\n\\006uint32\\030\\004 \\001(\\r\\022\\017\" +\n      \"\\n\\007fixed64\\030\\005 \\001(\\006\\022\\020\\n\\010sfixed64\\030\\006 \\001(\\020\\022\\r\\n\\005int\" +\n      \"64\\030\\007 \\001(\\003\\022\\016\\n\\006uint64\\030\\010 \\001(\\004\\022\\r\\n\\005float\\030\\t \\001(\\002\\022\" +\n      \"\\016\\n\\006double\\030\\n \\001(\\001\\022\\014\\n\\004bool\\030\\013 \\001(\\010\\022\\016\\n\\006string\\030\" +\n      \"\\014 \\001(\\t\\022\\r\\n\\005bytes\\030\\r \\001(\\014\"\n    };\n    descriptor = com.google.protobuf.Descriptors.FileDescriptor\n      .internalBuildGeneratedFileFrom(descriptorData,\n        new com.google.protobuf.Descriptors.FileDescriptor[] {\n        });\n    internal_static_it_auties_protobuf_ScalarMessage_descriptor =\n      getDescriptor().getMessageTypes().get(0);\n    internal_static_it_auties_protobuf_ScalarMessage_fieldAccessorTable = new\n      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(\n        internal_static_it_auties_protobuf_ScalarMessage_descriptor,\n        new java.lang.String[] { \"Fixed32\", \"Sfixed32\", \"Int32\", \"Uint32\", \"Fixed64\", \"Sfixed64\", \"Int64\", \"Uint64\", \"Float\", \"Double\", \"Bool\", \"String\", \"Bytes\", });\n  }\n\n  // @@protoc_insertion_point(outer_class_scope)\n}\n  ```\n\u003c/details\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eGoogle's Lite Protobuf mutable java class (1318 LOC)\u003c/summary\u003e\n\n  ```\n// Generated by the protocol buffer compiler.  DO NOT EDIT!\n// source: scalar.proto\n\npublic final class Scalar {\n  private Scalar() {}\n  public static void registerAllExtensions(\n      com.google.protobuf.ExtensionRegistryLite registry) {\n  }\n  public interface ScalarMessageOrBuilder extends\n      // @@protoc_insertion_point(interface_extends:it.auties.protobuf.ScalarMessage)\n      com.google.protobuf.MessageLiteOrBuilder {\n\n    /**\n     * \u003ccode\u003eoptional fixed32 fixed32 = 1;\u003c/code\u003e\n     * @return Whether the fixed32 field is set.\n     */\n    boolean hasFixed32();\n    /**\n     * \u003ccode\u003eoptional fixed32 fixed32 = 1;\u003c/code\u003e\n     * @return The fixed32.\n     */\n    int getFixed32();\n\n    /**\n     * \u003ccode\u003eoptional sfixed32 sfixed32 = 2;\u003c/code\u003e\n     * @return Whether the sfixed32 field is set.\n     */\n    boolean hasSfixed32();\n    /**\n     * \u003ccode\u003eoptional sfixed32 sfixed32 = 2;\u003c/code\u003e\n     * @return The sfixed32.\n     */\n    int getSfixed32();\n\n    /**\n     * \u003ccode\u003eoptional int32 int32 = 3;\u003c/code\u003e\n     * @return Whether the int32 field is set.\n     */\n    boolean hasInt32();\n    /**\n     * \u003ccode\u003eoptional int32 int32 = 3;\u003c/code\u003e\n     * @return The int32.\n     */\n    int getInt32();\n\n    /**\n     * \u003ccode\u003eoptional uint32 uint32 = 4;\u003c/code\u003e\n     * @return Whether the uint32 field is set.\n     */\n    boolean hasUint32();\n    /**\n     * \u003ccode\u003eoptional uint32 uint32 = 4;\u003c/code\u003e\n     * @return The uint32.\n     */\n    int getUint32();\n\n    /**\n     * \u003ccode\u003eoptional fixed64 fixed64 = 5;\u003c/code\u003e\n     * @return Whether the fixed64 field is set.\n     */\n    boolean hasFixed64();\n    /**\n     * \u003ccode\u003eoptional fixed64 fixed64 = 5;\u003c/code\u003e\n     * @return The fixed64.\n     */\n    long getFixed64();\n\n    /**\n     * \u003ccode\u003eoptional sfixed64 sfixed64 = 6;\u003c/code\u003e\n     * @return Whether the sfixed64 field is set.\n     */\n    boolean hasSfixed64();\n    /**\n     * \u003ccode\u003eoptional sfixed64 sfixed64 = 6;\u003c/code\u003e\n     * @return The sfixed64.\n     */\n    long getSfixed64();\n\n    /**\n     * \u003ccode\u003eoptional int64 int64 = 7;\u003c/code\u003e\n     * @return Whether the int64 field is set.\n     */\n    boolean hasInt64();\n    /**\n     * \u003ccode\u003eoptional int64 int64 = 7;\u003c/code\u003e\n     * @return The int64.\n     */\n    long getInt64();\n\n    /**\n     * \u003ccode\u003eoptional uint64 uint64 = 8;\u003c/code\u003e\n     * @return Whether the uint64 field is set.\n     */\n    boolean hasUint64();\n    /**\n     * \u003ccode\u003eoptional uint64 uint64 = 8;\u003c/code\u003e\n     * @return The uint64.\n     */\n    long getUint64();\n\n    /**\n     * \u003ccode\u003eoptional float float = 9;\u003c/code\u003e\n     * @return Whether the float field is set.\n     */\n    boolean hasFloat();\n    /**\n     * \u003ccode\u003eoptional float float = 9;\u003c/code\u003e\n     * @return The float.\n     */\n    float getFloat();\n\n    /**\n     * \u003ccode\u003eoptional double double = 10;\u003c/code\u003e\n     * @return Whether the double field is set.\n     */\n    boolean hasDouble();\n    /**\n     * \u003ccode\u003eoptional double double = 10;\u003c/code\u003e\n     * @return The double.\n     */\n    double getDouble();\n\n    /**\n     * \u003ccode\u003eoptional bool bool = 11;\u003c/code\u003e\n     * @return Whether the bool field is set.\n     */\n    boolean hasBool();\n    /**\n     * \u003ccode\u003eoptional bool bool = 11;\u003c/code\u003e\n     * @return The bool.\n     */\n    boolean getBool();\n\n    /**\n     * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n     * @return Whether the string field is set.\n     */\n    boolean hasString();\n    /**\n     * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n     * @return The string.\n     */\n    java.lang.String getString();\n    /**\n     * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n     * @return The bytes for string.\n     */\n    com.google.protobuf.ByteString\n        getStringBytes();\n\n    /**\n     * \u003ccode\u003eoptional bytes bytes = 13;\u003c/code\u003e\n     * @return Whether the bytes field is set.\n     */\n    boolean hasBytes();\n    /**\n     * \u003ccode\u003eoptional bytes bytes = 13;\u003c/code\u003e\n     * @return The bytes.\n     */\n    com.google.protobuf.ByteString getBytes();\n  }\n  /**\n   * Protobuf type {@code it.auties.protobuf.ScalarMessage}\n   */\n  public  static final class ScalarMessage extends\n      com.google.protobuf.GeneratedMessageLite\u003c\n          ScalarMessage, ScalarMessage.Builder\u003e implements\n      // @@protoc_insertion_point(message_implements:it.auties.protobuf.ScalarMessage)\n      ScalarMessageOrBuilder {\n    private ScalarMessage() {\n      string_ = \"\";\n      bytes_ = com.google.protobuf.ByteString.EMPTY;\n    }\n    private int bitField0_;\n    public static final int FIXED32_FIELD_NUMBER = 1;\n    private int fixed32_;\n    /**\n     * \u003ccode\u003eoptional fixed32 fixed32 = 1;\u003c/code\u003e\n     * @return Whether the fixed32 field is set.\n     */\n    @java.lang.Override\n    public boolean hasFixed32() {\n      return ((bitField0_ \u0026 0x00000001) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional fixed32 fixed32 = 1;\u003c/code\u003e\n     * @return The fixed32.\n     */\n    @java.lang.Override\n    public int getFixed32() {\n      return fixed32_;\n    }\n    /**\n     * \u003ccode\u003eoptional fixed32 fixed32 = 1;\u003c/code\u003e\n     * @param value The fixed32 to set.\n     */\n    private void setFixed32(int value) {\n      bitField0_ |= 0x00000001;\n      fixed32_ = value;\n    }\n    /**\n     * \u003ccode\u003eoptional fixed32 fixed32 = 1;\u003c/code\u003e\n     */\n    private void clearFixed32() {\n      bitField0_ = (bitField0_ \u0026 ~0x00000001);\n      fixed32_ = 0;\n    }\n\n    public static final int SFIXED32_FIELD_NUMBER = 2;\n    private int sfixed32_;\n    /**\n     * \u003ccode\u003eoptional sfixed32 sfixed32 = 2;\u003c/code\u003e\n     * @return Whether the sfixed32 field is set.\n     */\n    @java.lang.Override\n    public boolean hasSfixed32() {\n      return ((bitField0_ \u0026 0x00000002) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional sfixed32 sfixed32 = 2;\u003c/code\u003e\n     * @return The sfixed32.\n     */\n    @java.lang.Override\n    public int getSfixed32() {\n      return sfixed32_;\n    }\n    /**\n     * \u003ccode\u003eoptional sfixed32 sfixed32 = 2;\u003c/code\u003e\n     * @param value The sfixed32 to set.\n     */\n    private void setSfixed32(int value) {\n      bitField0_ |= 0x00000002;\n      sfixed32_ = value;\n    }\n    /**\n     * \u003ccode\u003eoptional sfixed32 sfixed32 = 2;\u003c/code\u003e\n     */\n    private void clearSfixed32() {\n      bitField0_ = (bitField0_ \u0026 ~0x00000002);\n      sfixed32_ = 0;\n    }\n\n    public static final int INT32_FIELD_NUMBER = 3;\n    private int int32_;\n    /**\n     * \u003ccode\u003eoptional int32 int32 = 3;\u003c/code\u003e\n     * @return Whether the int32 field is set.\n     */\n    @java.lang.Override\n    public boolean hasInt32() {\n      return ((bitField0_ \u0026 0x00000004) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional int32 int32 = 3;\u003c/code\u003e\n     * @return The int32.\n     */\n    @java.lang.Override\n    public int getInt32() {\n      return int32_;\n    }\n    /**\n     * \u003ccode\u003eoptional int32 int32 = 3;\u003c/code\u003e\n     * @param value The int32 to set.\n     */\n    private void setInt32(int value) {\n      bitField0_ |= 0x00000004;\n      int32_ = value;\n    }\n    /**\n     * \u003ccode\u003eoptional int32 int32 = 3;\u003c/code\u003e\n     */\n    private void clearInt32() {\n      bitField0_ = (bitField0_ \u0026 ~0x00000004);\n      int32_ = 0;\n    }\n\n    public static final int UINT32_FIELD_NUMBER = 4;\n    private int uint32_;\n    /**\n     * \u003ccode\u003eoptional uint32 uint32 = 4;\u003c/code\u003e\n     * @return Whether the uint32 field is set.\n     */\n    @java.lang.Override\n    public boolean hasUint32() {\n      return ((bitField0_ \u0026 0x00000008) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional uint32 uint32 = 4;\u003c/code\u003e\n     * @return The uint32.\n     */\n    @java.lang.Override\n    public int getUint32() {\n      return uint32_;\n    }\n    /**\n     * \u003ccode\u003eoptional uint32 uint32 = 4;\u003c/code\u003e\n     * @param value The uint32 to set.\n     */\n    private void setUint32(int value) {\n      bitField0_ |= 0x00000008;\n      uint32_ = value;\n    }\n    /**\n     * \u003ccode\u003eoptional uint32 uint32 = 4;\u003c/code\u003e\n     */\n    private void clearUint32() {\n      bitField0_ = (bitField0_ \u0026 ~0x00000008);\n      uint32_ = 0;\n    }\n\n    public static final int FIXED64_FIELD_NUMBER = 5;\n    private long fixed64_;\n    /**\n     * \u003ccode\u003eoptional fixed64 fixed64 = 5;\u003c/code\u003e\n     * @return Whether the fixed64 field is set.\n     */\n    @java.lang.Override\n    public boolean hasFixed64() {\n      return ((bitField0_ \u0026 0x00000010) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional fixed64 fixed64 = 5;\u003c/code\u003e\n     * @return The fixed64.\n     */\n    @java.lang.Override\n    public long getFixed64() {\n      return fixed64_;\n    }\n    /**\n     * \u003ccode\u003eoptional fixed64 fixed64 = 5;\u003c/code\u003e\n     * @param value The fixed64 to set.\n     */\n    private void setFixed64(long value) {\n      bitField0_ |= 0x00000010;\n      fixed64_ = value;\n    }\n    /**\n     * \u003ccode\u003eoptional fixed64 fixed64 = 5;\u003c/code\u003e\n     */\n    private void clearFixed64() {\n      bitField0_ = (bitField0_ \u0026 ~0x00000010);\n      fixed64_ = 0L;\n    }\n\n    public static final int SFIXED64_FIELD_NUMBER = 6;\n    private long sfixed64_;\n    /**\n     * \u003ccode\u003eoptional sfixed64 sfixed64 = 6;\u003c/code\u003e\n     * @return Whether the sfixed64 field is set.\n     */\n    @java.lang.Override\n    public boolean hasSfixed64() {\n      return ((bitField0_ \u0026 0x00000020) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional sfixed64 sfixed64 = 6;\u003c/code\u003e\n     * @return The sfixed64.\n     */\n    @java.lang.Override\n    public long getSfixed64() {\n      return sfixed64_;\n    }\n    /**\n     * \u003ccode\u003eoptional sfixed64 sfixed64 = 6;\u003c/code\u003e\n     * @param value The sfixed64 to set.\n     */\n    private void setSfixed64(long value) {\n      bitField0_ |= 0x00000020;\n      sfixed64_ = value;\n    }\n    /**\n     * \u003ccode\u003eoptional sfixed64 sfixed64 = 6;\u003c/code\u003e\n     */\n    private void clearSfixed64() {\n      bitField0_ = (bitField0_ \u0026 ~0x00000020);\n      sfixed64_ = 0L;\n    }\n\n    public static final int INT64_FIELD_NUMBER = 7;\n    private long int64_;\n    /**\n     * \u003ccode\u003eoptional int64 int64 = 7;\u003c/code\u003e\n     * @return Whether the int64 field is set.\n     */\n    @java.lang.Override\n    public boolean hasInt64() {\n      return ((bitField0_ \u0026 0x00000040) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional int64 int64 = 7;\u003c/code\u003e\n     * @return The int64.\n     */\n    @java.lang.Override\n    public long getInt64() {\n      return int64_;\n    }\n    /**\n     * \u003ccode\u003eoptional int64 int64 = 7;\u003c/code\u003e\n     * @param value The int64 to set.\n     */\n    private void setInt64(long value) {\n      bitField0_ |= 0x00000040;\n      int64_ = value;\n    }\n    /**\n     * \u003ccode\u003eoptional int64 int64 = 7;\u003c/code\u003e\n     */\n    private void clearInt64() {\n      bitField0_ = (bitField0_ \u0026 ~0x00000040);\n      int64_ = 0L;\n    }\n\n    public static final int UINT64_FIELD_NUMBER = 8;\n    private long uint64_;\n    /**\n     * \u003ccode\u003eoptional uint64 uint64 = 8;\u003c/code\u003e\n     * @return Whether the uint64 field is set.\n     */\n    @java.lang.Override\n    public boolean hasUint64() {\n      return ((bitField0_ \u0026 0x00000080) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional uint64 uint64 = 8;\u003c/code\u003e\n     * @return The uint64.\n     */\n    @java.lang.Override\n    public long getUint64() {\n      return uint64_;\n    }\n    /**\n     * \u003ccode\u003eoptional uint64 uint64 = 8;\u003c/code\u003e\n     * @param value The uint64 to set.\n     */\n    private void setUint64(long value) {\n      bitField0_ |= 0x00000080;\n      uint64_ = value;\n    }\n    /**\n     * \u003ccode\u003eoptional uint64 uint64 = 8;\u003c/code\u003e\n     */\n    private void clearUint64() {\n      bitField0_ = (bitField0_ \u0026 ~0x00000080);\n      uint64_ = 0L;\n    }\n\n    public static final int FLOAT_FIELD_NUMBER = 9;\n    private float float_;\n    /**\n     * \u003ccode\u003eoptional float float = 9;\u003c/code\u003e\n     * @return Whether the float field is set.\n     */\n    @java.lang.Override\n    public boolean hasFloat() {\n      return ((bitField0_ \u0026 0x00000100) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional float float = 9;\u003c/code\u003e\n     * @return The float.\n     */\n    @java.lang.Override\n    public float getFloat() {\n      return float_;\n    }\n    /**\n     * \u003ccode\u003eoptional float float = 9;\u003c/code\u003e\n     * @param value The float to set.\n     */\n    private void setFloat(float value) {\n      bitField0_ |= 0x00000100;\n      float_ = value;\n    }\n    /**\n     * \u003ccode\u003eoptional float float = 9;\u003c/code\u003e\n     */\n    private void clearFloat() {\n      bitField0_ = (bitField0_ \u0026 ~0x00000100);\n      float_ = 0F;\n    }\n\n    public static final int DOUBLE_FIELD_NUMBER = 10;\n    private double double_;\n    /**\n     * \u003ccode\u003eoptional double double = 10;\u003c/code\u003e\n     * @return Whether the double field is set.\n     */\n    @java.lang.Override\n    public boolean hasDouble() {\n      return ((bitField0_ \u0026 0x00000200) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional double double = 10;\u003c/code\u003e\n     * @return The double.\n     */\n    @java.lang.Override\n    public double getDouble() {\n      return double_;\n    }\n    /**\n     * \u003ccode\u003eoptional double double = 10;\u003c/code\u003e\n     * @param value The double to set.\n     */\n    private void setDouble(double value) {\n      bitField0_ |= 0x00000200;\n      double_ = value;\n    }\n    /**\n     * \u003ccode\u003eoptional double double = 10;\u003c/code\u003e\n     */\n    private void clearDouble() {\n      bitField0_ = (bitField0_ \u0026 ~0x00000200);\n      double_ = 0D;\n    }\n\n    public static final int BOOL_FIELD_NUMBER = 11;\n    private boolean bool_;\n    /**\n     * \u003ccode\u003eoptional bool bool = 11;\u003c/code\u003e\n     * @return Whether the bool field is set.\n     */\n    @java.lang.Override\n    public boolean hasBool() {\n      return ((bitField0_ \u0026 0x00000400) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional bool bool = 11;\u003c/code\u003e\n     * @return The bool.\n     */\n    @java.lang.Override\n    public boolean getBool() {\n      return bool_;\n    }\n    /**\n     * \u003ccode\u003eoptional bool bool = 11;\u003c/code\u003e\n     * @param value The bool to set.\n     */\n    private void setBool(boolean value) {\n      bitField0_ |= 0x00000400;\n      bool_ = value;\n    }\n    /**\n     * \u003ccode\u003eoptional bool bool = 11;\u003c/code\u003e\n     */\n    private void clearBool() {\n      bitField0_ = (bitField0_ \u0026 ~0x00000400);\n      bool_ = false;\n    }\n\n    public static final int STRING_FIELD_NUMBER = 12;\n    private java.lang.String string_;\n    /**\n     * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n     * @return Whether the string field is set.\n     */\n    @java.lang.Override\n    public boolean hasString() {\n      return ((bitField0_ \u0026 0x00000800) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n     * @return The string.\n     */\n    @java.lang.Override\n    public java.lang.String getString() {\n      return string_;\n    }\n    /**\n     * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n     * @return The bytes for string.\n     */\n    @java.lang.Override\n    public com.google.protobuf.ByteString\n        getStringBytes() {\n      return com.google.protobuf.ByteString.copyFromUtf8(string_);\n    }\n    /**\n     * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n     * @param value The string to set.\n     */\n    private void setString(\n        java.lang.String value) {\n      java.lang.Class\u003c?\u003e valueClass = value.getClass();\n  bitField0_ |= 0x00000800;\n      string_ = value;\n    }\n    /**\n     * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n     */\n    private void clearString() {\n      bitField0_ = (bitField0_ \u0026 ~0x00000800);\n      string_ = getDefaultInstance().getString();\n    }\n    /**\n     * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n     * @param value The bytes for string to set.\n     */\n    private void setStringBytes(\n        com.google.protobuf.ByteString value) {\n      string_ = value.toStringUtf8();\n      bitField0_ |= 0x00000800;\n    }\n\n    public static final int BYTES_FIELD_NUMBER = 13;\n    private com.google.protobuf.ByteString bytes_;\n    /**\n     * \u003ccode\u003eoptional bytes bytes = 13;\u003c/code\u003e\n     * @return Whether the bytes field is set.\n     */\n    @java.lang.Override\n    public boolean hasBytes() {\n      return ((bitField0_ \u0026 0x00001000) != 0);\n    }\n    /**\n     * \u003ccode\u003eoptional bytes bytes = 13;\u003c/code\u003e\n     * @return The bytes.\n     */\n    @java.lang.Override\n    public com.google.protobuf.ByteString getBytes() {\n      return bytes_;\n    }\n    /**\n     * \u003ccode\u003eoptional bytes bytes = 13;\u003c/code\u003e\n     * @param value The bytes to set.\n     */\n    private void setBytes(com.google.protobuf.ByteString value) {\n      java.lang.Class\u003c?\u003e valueClass = value.getClass();\n  bitField0_ |= 0x00001000;\n      bytes_ = value;\n    }\n    /**\n     * \u003ccode\u003eoptional bytes bytes = 13;\u003c/code\u003e\n     */\n    private void clearBytes() {\n      bitField0_ = (bitField0_ \u0026 ~0x00001000);\n      bytes_ = getDefaultInstance().getBytes();\n    }\n\n    public static it.auties.protobuf.Scalar.ScalarMessage parseFrom(\n        java.nio.ByteBuffer data)\n        throws com.google.protobuf.InvalidProtocolBufferException {\n      return com.google.protobuf.GeneratedMessageLite.parseFrom(\n          DEFAULT_INSTANCE, data);\n    }\n    public static it.auties.protobuf.Scalar.ScalarMessage parseFrom(\n        java.nio.ByteBuffer data,\n        com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n        throws com.google.protobuf.InvalidProtocolBufferException {\n      return com.google.protobuf.GeneratedMessageLite.parseFrom(\n          DEFAULT_INSTANCE, data, extensionRegistry);\n    }\n    public static it.auties.protobuf.Scalar.ScalarMessage parseFrom(\n        com.google.protobuf.ByteString data)\n        throws com.google.protobuf.InvalidProtocolBufferException {\n      return com.google.protobuf.GeneratedMessageLite.parseFrom(\n          DEFAULT_INSTANCE, data);\n    }\n    public static it.auties.protobuf.Scalar.ScalarMessage parseFrom(\n        com.google.protobuf.ByteString data,\n        com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n        throws com.google.protobuf.InvalidProtocolBufferException {\n      return com.google.protobuf.GeneratedMessageLite.parseFrom(\n          DEFAULT_INSTANCE, data, extensionRegistry);\n    }\n    public static it.auties.protobuf.Scalar.ScalarMessage parseFrom(byte[] data)\n        throws com.google.protobuf.InvalidProtocolBufferException {\n      return com.google.protobuf.GeneratedMessageLite.parseFrom(\n          DEFAULT_INSTANCE, data);\n    }\n    public static it.auties.protobuf.Scalar.ScalarMessage parseFrom(\n        byte[] data,\n        com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n        throws com.google.protobuf.InvalidProtocolBufferException {\n      return com.google.protobuf.GeneratedMessageLite.parseFrom(\n          DEFAULT_INSTANCE, data, extensionRegistry);\n    }\n    public static it.auties.protobuf.Scalar.ScalarMessage parseFrom(java.io.InputStream input)\n        throws java.io.IOException {\n      return com.google.protobuf.GeneratedMessageLite.parseFrom(\n          DEFAULT_INSTANCE, input);\n    }\n    public static it.auties.protobuf.Scalar.ScalarMessage parseFrom(\n        java.io.InputStream input,\n        com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n        throws java.io.IOException {\n      return com.google.protobuf.GeneratedMessageLite.parseFrom(\n          DEFAULT_INSTANCE, input, extensionRegistry);\n    }\n\n    public static it.auties.protobuf.Scalar.ScalarMessage parseDelimitedFrom(java.io.InputStream input)\n        throws java.io.IOException {\n      return parseDelimitedFrom(DEFAULT_INSTANCE, input);\n    }\n\n    public static it.auties.protobuf.Scalar.ScalarMessage parseDelimitedFrom(\n        java.io.InputStream input,\n        com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n        throws java.io.IOException {\n      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);\n    }\n    public static it.auties.protobuf.Scalar.ScalarMessage parseFrom(\n        com.google.protobuf.CodedInputStream input)\n        throws java.io.IOException {\n      return com.google.protobuf.GeneratedMessageLite.parseFrom(\n          DEFAULT_INSTANCE, input);\n    }\n    public static it.auties.protobuf.Scalar.ScalarMessage parseFrom(\n        com.google.protobuf.CodedInputStream input,\n        com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n        throws java.io.IOException {\n      return com.google.protobuf.GeneratedMessageLite.parseFrom(\n          DEFAULT_INSTANCE, input, extensionRegistry);\n    }\n\n    public static Builder newBuilder() {\n      return (Builder) DEFAULT_INSTANCE.createBuilder();\n    }\n    public static Builder newBuilder(it.auties.protobuf.Scalar.ScalarMessage prototype) {\n      return DEFAULT_INSTANCE.createBuilder(prototype);\n    }\n\n    /**\n     * Protobuf type {@code it.auties.protobuf.ScalarMessage}\n     */\n    public static final class Builder extends\n        com.google.protobuf.GeneratedMessageLite.Builder\u003c\n          it.auties.protobuf.Scalar.ScalarMessage, Builder\u003e implements\n        // @@protoc_insertion_point(builder_implements:it.auties.protobuf.ScalarMessage)\n        it.auties.protobuf.Scalar.ScalarMessageOrBuilder {\n      // Construct using it.auties.protobuf.Scalar.ScalarMessage.newBuilder()\n      private Builder() {\n        super(DEFAULT_INSTANCE);\n      }\n\n\n      /**\n       * \u003ccode\u003eoptional fixed32 fixed32 = 1;\u003c/code\u003e\n       * @return Whether the fixed32 field is set.\n       */\n      @java.lang.Override\n      public boolean hasFixed32() {\n        return instance.hasFixed32();\n      }\n      /**\n       * \u003ccode\u003eoptional fixed32 fixed32 = 1;\u003c/code\u003e\n       * @return The fixed32.\n       */\n      @java.lang.Override\n      public int getFixed32() {\n        return instance.getFixed32();\n      }\n      /**\n       * \u003ccode\u003eoptional fixed32 fixed32 = 1;\u003c/code\u003e\n       * @param value The fixed32 to set.\n       * @return This builder for chaining.\n       */\n      public Builder setFixed32(int value) {\n        copyOnWrite();\n        instance.setFixed32(value);\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional fixed32 fixed32 = 1;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearFixed32() {\n        copyOnWrite();\n        instance.clearFixed32();\n        return this;\n      }\n\n      /**\n       * \u003ccode\u003eoptional sfixed32 sfixed32 = 2;\u003c/code\u003e\n       * @return Whether the sfixed32 field is set.\n       */\n      @java.lang.Override\n      public boolean hasSfixed32() {\n        return instance.hasSfixed32();\n      }\n      /**\n       * \u003ccode\u003eoptional sfixed32 sfixed32 = 2;\u003c/code\u003e\n       * @return The sfixed32.\n       */\n      @java.lang.Override\n      public int getSfixed32() {\n        return instance.getSfixed32();\n      }\n      /**\n       * \u003ccode\u003eoptional sfixed32 sfixed32 = 2;\u003c/code\u003e\n       * @param value The sfixed32 to set.\n       * @return This builder for chaining.\n       */\n      public Builder setSfixed32(int value) {\n        copyOnWrite();\n        instance.setSfixed32(value);\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional sfixed32 sfixed32 = 2;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearSfixed32() {\n        copyOnWrite();\n        instance.clearSfixed32();\n        return this;\n      }\n\n      /**\n       * \u003ccode\u003eoptional int32 int32 = 3;\u003c/code\u003e\n       * @return Whether the int32 field is set.\n       */\n      @java.lang.Override\n      public boolean hasInt32() {\n        return instance.hasInt32();\n      }\n      /**\n       * \u003ccode\u003eoptional int32 int32 = 3;\u003c/code\u003e\n       * @return The int32.\n       */\n      @java.lang.Override\n      public int getInt32() {\n        return instance.getInt32();\n      }\n      /**\n       * \u003ccode\u003eoptional int32 int32 = 3;\u003c/code\u003e\n       * @param value The int32 to set.\n       * @return This builder for chaining.\n       */\n      public Builder setInt32(int value) {\n        copyOnWrite();\n        instance.setInt32(value);\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional int32 int32 = 3;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearInt32() {\n        copyOnWrite();\n        instance.clearInt32();\n        return this;\n      }\n\n      /**\n       * \u003ccode\u003eoptional uint32 uint32 = 4;\u003c/code\u003e\n       * @return Whether the uint32 field is set.\n       */\n      @java.lang.Override\n      public boolean hasUint32() {\n        return instance.hasUint32();\n      }\n      /**\n       * \u003ccode\u003eoptional uint32 uint32 = 4;\u003c/code\u003e\n       * @return The uint32.\n       */\n      @java.lang.Override\n      public int getUint32() {\n        return instance.getUint32();\n      }\n      /**\n       * \u003ccode\u003eoptional uint32 uint32 = 4;\u003c/code\u003e\n       * @param value The uint32 to set.\n       * @return This builder for chaining.\n       */\n      public Builder setUint32(int value) {\n        copyOnWrite();\n        instance.setUint32(value);\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional uint32 uint32 = 4;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearUint32() {\n        copyOnWrite();\n        instance.clearUint32();\n        return this;\n      }\n\n      /**\n       * \u003ccode\u003eoptional fixed64 fixed64 = 5;\u003c/code\u003e\n       * @return Whether the fixed64 field is set.\n       */\n      @java.lang.Override\n      public boolean hasFixed64() {\n        return instance.hasFixed64();\n      }\n      /**\n       * \u003ccode\u003eoptional fixed64 fixed64 = 5;\u003c/code\u003e\n       * @return The fixed64.\n       */\n      @java.lang.Override\n      public long getFixed64() {\n        return instance.getFixed64();\n      }\n      /**\n       * \u003ccode\u003eoptional fixed64 fixed64 = 5;\u003c/code\u003e\n       * @param value The fixed64 to set.\n       * @return This builder for chaining.\n       */\n      public Builder setFixed64(long value) {\n        copyOnWrite();\n        instance.setFixed64(value);\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional fixed64 fixed64 = 5;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearFixed64() {\n        copyOnWrite();\n        instance.clearFixed64();\n        return this;\n      }\n\n      /**\n       * \u003ccode\u003eoptional sfixed64 sfixed64 = 6;\u003c/code\u003e\n       * @return Whether the sfixed64 field is set.\n       */\n      @java.lang.Override\n      public boolean hasSfixed64() {\n        return instance.hasSfixed64();\n      }\n      /**\n       * \u003ccode\u003eoptional sfixed64 sfixed64 = 6;\u003c/code\u003e\n       * @return The sfixed64.\n       */\n      @java.lang.Override\n      public long getSfixed64() {\n        return instance.getSfixed64();\n      }\n      /**\n       * \u003ccode\u003eoptional sfixed64 sfixed64 = 6;\u003c/code\u003e\n       * @param value The sfixed64 to set.\n       * @return This builder for chaining.\n       */\n      public Builder setSfixed64(long value) {\n        copyOnWrite();\n        instance.setSfixed64(value);\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional sfixed64 sfixed64 = 6;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearSfixed64() {\n        copyOnWrite();\n        instance.clearSfixed64();\n        return this;\n      }\n\n      /**\n       * \u003ccode\u003eoptional int64 int64 = 7;\u003c/code\u003e\n       * @return Whether the int64 field is set.\n       */\n      @java.lang.Override\n      public boolean hasInt64() {\n        return instance.hasInt64();\n      }\n      /**\n       * \u003ccode\u003eoptional int64 int64 = 7;\u003c/code\u003e\n       * @return The int64.\n       */\n      @java.lang.Override\n      public long getInt64() {\n        return instance.getInt64();\n      }\n      /**\n       * \u003ccode\u003eoptional int64 int64 = 7;\u003c/code\u003e\n       * @param value The int64 to set.\n       * @return This builder for chaining.\n       */\n      public Builder setInt64(long value) {\n        copyOnWrite();\n        instance.setInt64(value);\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional int64 int64 = 7;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearInt64() {\n        copyOnWrite();\n        instance.clearInt64();\n        return this;\n      }\n\n      /**\n       * \u003ccode\u003eoptional uint64 uint64 = 8;\u003c/code\u003e\n       * @return Whether the uint64 field is set.\n       */\n      @java.lang.Override\n      public boolean hasUint64() {\n        return instance.hasUint64();\n      }\n      /**\n       * \u003ccode\u003eoptional uint64 uint64 = 8;\u003c/code\u003e\n       * @return The uint64.\n       */\n      @java.lang.Override\n      public long getUint64() {\n        return instance.getUint64();\n      }\n      /**\n       * \u003ccode\u003eoptional uint64 uint64 = 8;\u003c/code\u003e\n       * @param value The uint64 to set.\n       * @return This builder for chaining.\n       */\n      public Builder setUint64(long value) {\n        copyOnWrite();\n        instance.setUint64(value);\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional uint64 uint64 = 8;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearUint64() {\n        copyOnWrite();\n        instance.clearUint64();\n        return this;\n      }\n\n      /**\n       * \u003ccode\u003eoptional float float = 9;\u003c/code\u003e\n       * @return Whether the float field is set.\n       */\n      @java.lang.Override\n      public boolean hasFloat() {\n        return instance.hasFloat();\n      }\n      /**\n       * \u003ccode\u003eoptional float float = 9;\u003c/code\u003e\n       * @return The float.\n       */\n      @java.lang.Override\n      public float getFloat() {\n        return instance.getFloat();\n      }\n      /**\n       * \u003ccode\u003eoptional float float = 9;\u003c/code\u003e\n       * @param value The float to set.\n       * @return This builder for chaining.\n       */\n      public Builder setFloat(float value) {\n        copyOnWrite();\n        instance.setFloat(value);\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional float float = 9;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearFloat() {\n        copyOnWrite();\n        instance.clearFloat();\n        return this;\n      }\n\n      /**\n       * \u003ccode\u003eoptional double double = 10;\u003c/code\u003e\n       * @return Whether the double field is set.\n       */\n      @java.lang.Override\n      public boolean hasDouble() {\n        return instance.hasDouble();\n      }\n      /**\n       * \u003ccode\u003eoptional double double = 10;\u003c/code\u003e\n       * @return The double.\n       */\n      @java.lang.Override\n      public double getDouble() {\n        return instance.getDouble();\n      }\n      /**\n       * \u003ccode\u003eoptional double double = 10;\u003c/code\u003e\n       * @param value The double to set.\n       * @return This builder for chaining.\n       */\n      public Builder setDouble(double value) {\n        copyOnWrite();\n        instance.setDouble(value);\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional double double = 10;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearDouble() {\n        copyOnWrite();\n        instance.clearDouble();\n        return this;\n      }\n\n      /**\n       * \u003ccode\u003eoptional bool bool = 11;\u003c/code\u003e\n       * @return Whether the bool field is set.\n       */\n      @java.lang.Override\n      public boolean hasBool() {\n        return instance.hasBool();\n      }\n      /**\n       * \u003ccode\u003eoptional bool bool = 11;\u003c/code\u003e\n       * @return The bool.\n       */\n      @java.lang.Override\n      public boolean getBool() {\n        return instance.getBool();\n      }\n      /**\n       * \u003ccode\u003eoptional bool bool = 11;\u003c/code\u003e\n       * @param value The bool to set.\n       * @return This builder for chaining.\n       */\n      public Builder setBool(boolean value) {\n        copyOnWrite();\n        instance.setBool(value);\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional bool bool = 11;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearBool() {\n        copyOnWrite();\n        instance.clearBool();\n        return this;\n      }\n\n      /**\n       * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n       * @return Whether the string field is set.\n       */\n      @java.lang.Override\n      public boolean hasString() {\n        return instance.hasString();\n      }\n      /**\n       * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n       * @return The string.\n       */\n      @java.lang.Override\n      public java.lang.String getString() {\n        return instance.getString();\n      }\n      /**\n       * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n       * @return The bytes for string.\n       */\n      @java.lang.Override\n      public com.google.protobuf.ByteString\n          getStringBytes() {\n        return instance.getStringBytes();\n      }\n      /**\n       * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n       * @param value The string to set.\n       * @return This builder for chaining.\n       */\n      public Builder setString(\n          java.lang.String value) {\n        copyOnWrite();\n        instance.setString(value);\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearString() {\n        copyOnWrite();\n        instance.clearString();\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional string string = 12;\u003c/code\u003e\n       * @param value The bytes for string to set.\n       * @return This builder for chaining.\n       */\n      public Builder setStringBytes(\n          com.google.protobuf.ByteString value) {\n        copyOnWrite();\n        instance.setStringBytes(value);\n        return this;\n      }\n\n      /**\n       * \u003ccode\u003eoptional bytes bytes = 13;\u003c/code\u003e\n       * @return Whether the bytes field is set.\n       */\n      @java.lang.Override\n      public boolean hasBytes() {\n        return instance.hasBytes();\n      }\n      /**\n       * \u003ccode\u003eoptional bytes bytes = 13;\u003c/code\u003e\n       * @return The bytes.\n       */\n      @java.lang.Override\n      public com.google.protobuf.ByteString getBytes() {\n        return instance.getBytes();\n      }\n      /**\n       * \u003ccode\u003eoptional bytes bytes = 13;\u003c/code\u003e\n       * @param value The bytes to set.\n       * @return This builder for chaining.\n       */\n      public Builder setBytes(com.google.protobuf.ByteString value) {\n        copyOnWrite();\n        instance.setBytes(value);\n        return this;\n      }\n      /**\n       * \u003ccode\u003eoptional bytes bytes = 13;\u003c/code\u003e\n       * @return This builder for chaining.\n       */\n      public Builder clearBytes() {\n        copyOnWrite();\n        instance.clearBytes();\n        return this;\n      }\n\n      // @@protoc_insertion_point(builder_scope:it.auties.protobuf.ScalarMessage)\n    }\n    @java.lang.Override\n    @java.lang.SuppressWarnings({\"unchecked\", \"fallthrough\"})\n    protected final java.lang.Object dynamicMethod(\n        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,\n        java.lang.Object arg0, java.lang.Object arg1) {\n      switch (method) {\n        case NEW_MUTABLE_INSTANCE: {\n          return new it.auties.protobuf.Scalar.ScalarMessage();\n        }\n        case NEW_BUILDER: {\n          return new Builder();\n        }\n        case BUILD_MESSAGE_INFO: {\n            java.lang.Object[] objects = new java.lang.Object[] {\n              \"bitField0_\",\n              \"fixed32_\",\n              \"sfixed32_\",\n              \"int32_\",\n              \"uint32_\",\n              \"fixed64_\",\n              \"sfixed64_\",\n              \"int64_\",\n              \"uint64_\",\n              \"float_\",\n              \"double_\",\n              \"bool_\",\n              \"string_\",\n              \"bytes_\",\n            };\n            java.lang.String info =\n                \"\\u0001\\r\\u0000\\u0001\\u0001\\r\\r\\u0000\\u0000\\u0000\\u0001\\u1006\\u0000\\u0002\\u100d\\u0001\" +\n                \"\\u0003\\u1004\\u0002\\u0004\\u100b\\u0003\\u0005\\u1005\\u0004\\u0006\\u100e\\u0005\\u0007\\u1002\" +\n                \"\\u0006\\b\\u1003\\u0007\\t\\u1001\\b\\n\\u1000\\t\\u000b\\u1007\\n\\f\\u1008\\u000b\\r\\u100a\\f\";\n            return newMessageInfo(DEFAULT_INSTANCE, info, objects);\n        }\n        // fall through\n        case GET_DEFAULT_INSTANCE: {\n          return DEFAULT_INSTANCE;\n        }\n        case GET_PARSER: {\n          com.google.protobuf.Parser\u003cit.auties.protobuf.Scalar.ScalarMessage\u003e parser = PARSER;\n          if (parser == null) {\n            synchronized (it.auties.protobuf.Scalar.ScalarMessage.class) {\n              parser = PARSER;\n              if (parser == null) {\n                parser =\n                    new DefaultInstanceBasedParser\u003cit.auties.protobuf.Scalar.ScalarMessage\u003e(\n                        DEFAULT_INSTANCE);\n                PARSER = parser;\n              }\n            }\n          }\n          return parser;\n      }\n      case GET_MEMOIZED_IS_INITIALIZED: {\n        return (byte) 1;\n      }\n      case SET_MEMOIZED_IS_INITIALIZED: {\n        return null;\n      }\n      }\n      throw new UnsupportedOperationException();\n    }\n\n\n    // @@protoc_insertion_point(class_scope:it.auties.protobuf.ScalarMessage)\n    private static final it.auties.protobuf.Scalar.ScalarMessage DEFAULT_INSTANCE;\n    static {\n      ScalarMessage defaultInstance = new ScalarMessage();\n      // New instances are implicitly immutable so no need to make\n      // immutable.\n      DEFAULT_INSTANCE = defaultInstance;\n      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(\n        ScalarMessage.class, defaultInstance);\n    }\n\n    public static it.auties.protobuf.Scalar.ScalarMessage getDefaultInstance() {\n      return DEFAULT_INSTANCE;\n    }\n\n    private static volatile com.google.protobuf.Parser\u003cScalarMessage\u003e PARSER;\n\n    public static com.google.protobuf.Parser\u003cScalarMessage\u003e parser() {\n      return DEFAULT_INSTANCE.getParserForType();\n    }\n  }\n\n\n  static {\n  }\n\n  // @@protoc_insertion_point(outer_class_scope)\n}\n  ```\n\u003c/details\u003e\n\n**ModernProtobuf's model is around 8x times smaller than Google's(including generated sources!)**\n\u003e The actual ratio will differ based on the size of the Protobuf schema, this is based on the provided example\n\n\n#### Performance\n\nReading that the schema is so much smaller, you might think that I had to compromise on performance.\nLet's benchmark how much it takes to deserialize 1000 times a message created from the ScalarMessage.proto example:\n[Here is the source for the test in case you want to run it yourself.](https://github.com/Auties00/ModernProtobuf/tree/master/plugin/test/src/main/java/it/auties/proto/benchmark/PerformanceBenchmark.java)\nHere are the results:\n```\nBenchmark                                                     Mode  Cnt    Score   Error  Units\nSimplePerformanceBenchmark.googleLiteProtobufDeserialization  avgt    5  181.916 ± 0.615  us/op\nSimplePerformanceBenchmark.googleLiteProtobufSerialization    avgt    5  157.393 ± 1.001  us/op\nSimplePerformanceBenchmark.googleProtobufDeserialization      avgt    5  118.161 ± 0.397  us/op\nSimplePerformanceBenchmark.googleProtobufSerialization        avgt    5   77.071 ± 0.273  us/op\nSimplePerformanceBenchmark.modernProtobufDeserialization      avgt    5  ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fauties00%2Fmodernprotobuf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fauties00%2Fmodernprotobuf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fauties00%2Fmodernprotobuf/lists"}