From 15a2e6c7bc6a06a6187f54fcd0f84d0d0b0efca0 Mon Sep 17 00:00:00 2001
From: Sylvain Berfini <sylvain.berfini@belledonne-communications.com>
Date: Thu, 28 Mar 2024 13:05:16 +0100
Subject: [PATCH] Parse previous native crash tombstone if possible on Android

---
 .../server/os/LinphoneTombstoneProtos.java    | 12478 ++++++++++++++++
 .../core/tools/compatibility/DeviceUtils.java |    16 +-
 .../tools/compatibility/DeviceUtils30.java    |    29 +-
 .../tools/compatibility/DeviceUtils31.java    |    18 +-
 wrappers/java/proguard.mustache               |     7 +-
 wrappers/java/tombstone.proto                 |   180 +
 6 files changed, 12720 insertions(+), 8 deletions(-)
 create mode 100644 wrappers/java/classes/com/android/server/os/LinphoneTombstoneProtos.java
 create mode 100644 wrappers/java/tombstone.proto

diff --git a/wrappers/java/classes/com/android/server/os/LinphoneTombstoneProtos.java b/wrappers/java/classes/com/android/server/os/LinphoneTombstoneProtos.java
new file mode 100644
index 0000000000..61617b1c42
--- /dev/null
+++ b/wrappers/java/classes/com/android/server/os/LinphoneTombstoneProtos.java
@@ -0,0 +1,12478 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tombstone.proto
+
+package com.android.server.os;
+
+public final class LinphoneTombstoneProtos {
+  private LinphoneTombstoneProtos() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistryLite registry) {
+  }
+  /**
+   * Protobuf enum {@code Architecture}
+   */
+  public enum Architecture
+      implements com.google.protobuf.Internal.EnumLite {
+    /**
+     * <code>ARM32 = 0;</code>
+     */
+    ARM32(0),
+    /**
+     * <code>ARM64 = 1;</code>
+     */
+    ARM64(1),
+    /**
+     * <code>X86 = 2;</code>
+     */
+    X86(2),
+    /**
+     * <code>X86_64 = 3;</code>
+     */
+    X86_64(3),
+    /**
+     * <code>RISCV64 = 4;</code>
+     */
+    RISCV64(4),
+    UNRECOGNIZED(-1),
+    ;
+
+    /**
+     * <code>ARM32 = 0;</code>
+     */
+    public static final int ARM32_VALUE = 0;
+    /**
+     * <code>ARM64 = 1;</code>
+     */
+    public static final int ARM64_VALUE = 1;
+    /**
+     * <code>X86 = 2;</code>
+     */
+    public static final int X86_VALUE = 2;
+    /**
+     * <code>X86_64 = 3;</code>
+     */
+    public static final int X86_64_VALUE = 3;
+    /**
+     * <code>RISCV64 = 4;</code>
+     */
+    public static final int RISCV64_VALUE = 4;
+
+
+    @java.lang.Override
+    public final int getNumber() {
+      if (this == UNRECOGNIZED) {
+        throw new java.lang.IllegalArgumentException(
+            "Can't get the number of an unknown enum value.");
+      }
+      return value;
+    }
+
+    /**
+     * @param value The number of the enum to look for.
+     * @return The enum associated with the given number.
+     * @deprecated Use {@link #forNumber(int)} instead.
+     */
+    @java.lang.Deprecated
+    public static Architecture valueOf(int value) {
+      return forNumber(value);
+    }
+
+    public static Architecture forNumber(int value) {
+      switch (value) {
+        case 0: return ARM32;
+        case 1: return ARM64;
+        case 2: return X86;
+        case 3: return X86_64;
+        case 4: return RISCV64;
+        default: return null;
+      }
+    }
+
+    public static com.google.protobuf.Internal.EnumLiteMap<Architecture>
+        internalGetValueMap() {
+      return internalValueMap;
+    }
+    private static final com.google.protobuf.Internal.EnumLiteMap<
+        Architecture> internalValueMap =
+          new com.google.protobuf.Internal.EnumLiteMap<Architecture>() {
+            @java.lang.Override
+            public Architecture findValueByNumber(int number) {
+              return Architecture.forNumber(number);
+            }
+          };
+
+    public static com.google.protobuf.Internal.EnumVerifier 
+        internalGetVerifier() {
+      return ArchitectureVerifier.INSTANCE;
+    }
+
+    private static final class ArchitectureVerifier implements 
+         com.google.protobuf.Internal.EnumVerifier { 
+            static final com.google.protobuf.Internal.EnumVerifier           INSTANCE = new ArchitectureVerifier();
+            @java.lang.Override
+            public boolean isInRange(int number) {
+              return Architecture.forNumber(number) != null;
+            }
+          };
+
+    private final int value;
+
+    private Architecture(int value) {
+      this.value = value;
+    }
+
+    // @@protoc_insertion_point(enum_scope:Architecture)
+  }
+
+  public interface CrashDetailOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:CrashDetail)
+      com.google.protobuf.MessageLiteOrBuilder {
+
+    /**
+     * <code>bytes name = 1;</code>
+     * @return The name.
+     */
+    com.google.protobuf.ByteString getName();
+
+    /**
+     * <code>bytes data = 2;</code>
+     * @return The data.
+     */
+    com.google.protobuf.ByteString getData();
+  }
+  /**
+   * <pre>
+   * NOTE TO OEMS:
+   * If you add custom fields to this proto, do not use numbers in the reserved range.
+   * </pre>
+   *
+   * Protobuf type {@code CrashDetail}
+   */
+  public  static final class CrashDetail extends
+      com.google.protobuf.GeneratedMessageLite<
+          CrashDetail, CrashDetail.Builder> implements
+      // @@protoc_insertion_point(message_implements:CrashDetail)
+      CrashDetailOrBuilder {
+    private CrashDetail() {
+      name_ = com.google.protobuf.ByteString.EMPTY;
+      data_ = com.google.protobuf.ByteString.EMPTY;
+    }
+    public static final int NAME_FIELD_NUMBER = 1;
+    private com.google.protobuf.ByteString name_;
+    /**
+     * <code>bytes name = 1;</code>
+     * @return The name.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString getName() {
+      return name_;
+    }
+    /**
+     * <code>bytes name = 1;</code>
+     * @param value The name to set.
+     */
+    private void setName(com.google.protobuf.ByteString value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      name_ = value;
+    }
+    /**
+     * <code>bytes name = 1;</code>
+     */
+    private void clearName() {
+      
+      name_ = getDefaultInstance().getName();
+    }
+
+    public static final int DATA_FIELD_NUMBER = 2;
+    private com.google.protobuf.ByteString data_;
+    /**
+     * <code>bytes data = 2;</code>
+     * @return The data.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString getData() {
+      return data_;
+    }
+    /**
+     * <code>bytes data = 2;</code>
+     * @param value The data to set.
+     */
+    private void setData(com.google.protobuf.ByteString value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      data_ = value;
+    }
+    /**
+     * <code>bytes data = 2;</code>
+     */
+    private void clearData() {
+      
+      data_ = getDefaultInstance().getData();
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.CrashDetail parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.CrashDetail parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.CrashDetail parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.CrashDetail parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.CrashDetail parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.CrashDetail parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.CrashDetail parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.CrashDetail parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.CrashDetail parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.CrashDetail parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.CrashDetail parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.CrashDetail parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return (Builder) DEFAULT_INSTANCE.createBuilder();
+    }
+    public static Builder newBuilder(com.android.server.os.LinphoneTombstoneProtos.CrashDetail prototype) {
+      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
+    }
+
+    /**
+     * <pre>
+     * NOTE TO OEMS:
+     * If you add custom fields to this proto, do not use numbers in the reserved range.
+     * </pre>
+     *
+     * Protobuf type {@code CrashDetail}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageLite.Builder<
+          com.android.server.os.LinphoneTombstoneProtos.CrashDetail, Builder> implements
+        // @@protoc_insertion_point(builder_implements:CrashDetail)
+        com.android.server.os.LinphoneTombstoneProtos.CrashDetailOrBuilder {
+      // Construct using com.android.server.os.LinphoneTombstoneProtos.CrashDetail.newBuilder()
+      private Builder() {
+        super(DEFAULT_INSTANCE);
+      }
+
+
+      /**
+       * <code>bytes name = 1;</code>
+       * @return The name.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString getName() {
+        return instance.getName();
+      }
+      /**
+       * <code>bytes name = 1;</code>
+       * @param value The name to set.
+       * @return This builder for chaining.
+       */
+      public Builder setName(com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setName(value);
+        return this;
+      }
+      /**
+       * <code>bytes name = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearName() {
+        copyOnWrite();
+        instance.clearName();
+        return this;
+      }
+
+      /**
+       * <code>bytes data = 2;</code>
+       * @return The data.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString getData() {
+        return instance.getData();
+      }
+      /**
+       * <code>bytes data = 2;</code>
+       * @param value The data to set.
+       * @return This builder for chaining.
+       */
+      public Builder setData(com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setData(value);
+        return this;
+      }
+      /**
+       * <code>bytes data = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearData() {
+        copyOnWrite();
+        instance.clearData();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:CrashDetail)
+    }
+    @java.lang.Override
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new com.android.server.os.LinphoneTombstoneProtos.CrashDetail();
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case BUILD_MESSAGE_INFO: {
+            java.lang.Object[] objects = new java.lang.Object[] {
+              "name_",
+              "data_",
+            };
+            java.lang.String info =
+                "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\n\u0002\n";
+            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          com.google.protobuf.Parser<com.android.server.os.LinphoneTombstoneProtos.CrashDetail> parser = PARSER;
+          if (parser == null) {
+            synchronized (com.android.server.os.LinphoneTombstoneProtos.CrashDetail.class) {
+              parser = PARSER;
+              if (parser == null) {
+                parser =
+                    new DefaultInstanceBasedParser<com.android.server.os.LinphoneTombstoneProtos.CrashDetail>(
+                        DEFAULT_INSTANCE);
+                PARSER = parser;
+              }
+            }
+          }
+          return parser;
+      }
+      case GET_MEMOIZED_IS_INITIALIZED: {
+        return (byte) 1;
+      }
+      case SET_MEMOIZED_IS_INITIALIZED: {
+        return null;
+      }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:CrashDetail)
+    private static final com.android.server.os.LinphoneTombstoneProtos.CrashDetail DEFAULT_INSTANCE;
+    static {
+      CrashDetail defaultInstance = new CrashDetail();
+      // New instances are implicitly immutable so no need to make
+      // immutable.
+      DEFAULT_INSTANCE = defaultInstance;
+      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
+        CrashDetail.class, defaultInstance);
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.CrashDetail getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<CrashDetail> PARSER;
+
+    public static com.google.protobuf.Parser<CrashDetail> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
+  }
+
+  public interface TombstoneOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:Tombstone)
+      com.google.protobuf.MessageLiteOrBuilder {
+
+    /**
+     * <code>.Architecture arch = 1;</code>
+     * @return The enum numeric value on the wire for arch.
+     */
+    int getArchValue();
+    /**
+     * <code>.Architecture arch = 1;</code>
+     * @return The arch.
+     */
+    com.android.server.os.LinphoneTombstoneProtos.Architecture getArch();
+
+    /**
+     * <code>string build_fingerprint = 2;</code>
+     * @return The buildFingerprint.
+     */
+    java.lang.String getBuildFingerprint();
+    /**
+     * <code>string build_fingerprint = 2;</code>
+     * @return The bytes for buildFingerprint.
+     */
+    com.google.protobuf.ByteString
+        getBuildFingerprintBytes();
+
+    /**
+     * <code>string revision = 3;</code>
+     * @return The revision.
+     */
+    java.lang.String getRevision();
+    /**
+     * <code>string revision = 3;</code>
+     * @return The bytes for revision.
+     */
+    com.google.protobuf.ByteString
+        getRevisionBytes();
+
+    /**
+     * <code>string timestamp = 4;</code>
+     * @return The timestamp.
+     */
+    java.lang.String getTimestamp();
+    /**
+     * <code>string timestamp = 4;</code>
+     * @return The bytes for timestamp.
+     */
+    com.google.protobuf.ByteString
+        getTimestampBytes();
+
+    /**
+     * <code>uint32 pid = 5;</code>
+     * @return The pid.
+     */
+    int getPid();
+
+    /**
+     * <code>uint32 tid = 6;</code>
+     * @return The tid.
+     */
+    int getTid();
+
+    /**
+     * <code>uint32 uid = 7;</code>
+     * @return The uid.
+     */
+    int getUid();
+
+    /**
+     * <code>string selinux_label = 8;</code>
+     * @return The selinuxLabel.
+     */
+    java.lang.String getSelinuxLabel();
+    /**
+     * <code>string selinux_label = 8;</code>
+     * @return The bytes for selinuxLabel.
+     */
+    com.google.protobuf.ByteString
+        getSelinuxLabelBytes();
+
+    /**
+     * <code>repeated string command_line = 9;</code>
+     * @return A list containing the commandLine.
+     */
+    java.util.List<java.lang.String>
+        getCommandLineList();
+    /**
+     * <code>repeated string command_line = 9;</code>
+     * @return The count of commandLine.
+     */
+    int getCommandLineCount();
+    /**
+     * <code>repeated string command_line = 9;</code>
+     * @param index The index of the element to return.
+     * @return The commandLine at the given index.
+     */
+    java.lang.String getCommandLine(int index);
+    /**
+     * <code>repeated string command_line = 9;</code>
+     * @param index The index of the element to return.
+     * @return The commandLine at the given index.
+     */
+    com.google.protobuf.ByteString
+        getCommandLineBytes(int index);
+
+    /**
+     * <pre>
+     * Process uptime in seconds.
+     * </pre>
+     *
+     * <code>uint32 process_uptime = 20;</code>
+     * @return The processUptime.
+     */
+    int getProcessUptime();
+
+    /**
+     * <code>.Signal signal_info = 10;</code>
+     * @return Whether the signalInfo field is set.
+     */
+    boolean hasSignalInfo();
+    /**
+     * <code>.Signal signal_info = 10;</code>
+     * @return The signalInfo.
+     */
+    com.android.server.os.LinphoneTombstoneProtos.Signal getSignalInfo();
+
+    /**
+     * <code>string abort_message = 14;</code>
+     * @return The abortMessage.
+     */
+    java.lang.String getAbortMessage();
+    /**
+     * <code>string abort_message = 14;</code>
+     * @return The bytes for abortMessage.
+     */
+    com.google.protobuf.ByteString
+        getAbortMessageBytes();
+
+    /**
+     * <code>repeated .CrashDetail crash_details = 21;</code>
+     */
+    java.util.List<com.android.server.os.LinphoneTombstoneProtos.CrashDetail> 
+        getCrashDetailsList();
+    /**
+     * <code>repeated .CrashDetail crash_details = 21;</code>
+     */
+    com.android.server.os.LinphoneTombstoneProtos.CrashDetail getCrashDetails(int index);
+    /**
+     * <code>repeated .CrashDetail crash_details = 21;</code>
+     */
+    int getCrashDetailsCount();
+
+    /**
+     * <code>repeated .Cause causes = 15;</code>
+     */
+    java.util.List<com.android.server.os.LinphoneTombstoneProtos.Cause> 
+        getCausesList();
+    /**
+     * <code>repeated .Cause causes = 15;</code>
+     */
+    com.android.server.os.LinphoneTombstoneProtos.Cause getCauses(int index);
+    /**
+     * <code>repeated .Cause causes = 15;</code>
+     */
+    int getCausesCount();
+
+    /**
+     * <code>map&lt;uint32, .Thread&gt; threads = 16;</code>
+     */
+    int getThreadsCount();
+    /**
+     * <code>map&lt;uint32, .Thread&gt; threads = 16;</code>
+     */
+    boolean containsThreads(
+        int key);
+    /**
+     * Use {@link #getThreadsMap()} instead.
+     */
+    @java.lang.Deprecated
+    java.util.Map<java.lang.Integer, com.android.server.os.LinphoneTombstoneProtos.Thread>
+    getThreads();
+    /**
+     * <code>map&lt;uint32, .Thread&gt; threads = 16;</code>
+     */
+    java.util.Map<java.lang.Integer, com.android.server.os.LinphoneTombstoneProtos.Thread>
+    getThreadsMap();
+    /**
+     * <code>map&lt;uint32, .Thread&gt; threads = 16;</code>
+     */
+
+    com.android.server.os.LinphoneTombstoneProtos.Thread getThreadsOrDefault(
+        int key,
+        com.android.server.os.LinphoneTombstoneProtos.Thread defaultValue);
+    /**
+     * <code>map&lt;uint32, .Thread&gt; threads = 16;</code>
+     */
+
+    com.android.server.os.LinphoneTombstoneProtos.Thread getThreadsOrThrow(
+        int key);
+
+    /**
+     * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+     */
+    java.util.List<com.android.server.os.LinphoneTombstoneProtos.MemoryMapping> 
+        getMemoryMappingsList();
+    /**
+     * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+     */
+    com.android.server.os.LinphoneTombstoneProtos.MemoryMapping getMemoryMappings(int index);
+    /**
+     * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+     */
+    int getMemoryMappingsCount();
+
+    /**
+     * <code>repeated .LogBuffer log_buffers = 18;</code>
+     */
+    java.util.List<com.android.server.os.LinphoneTombstoneProtos.LogBuffer> 
+        getLogBuffersList();
+    /**
+     * <code>repeated .LogBuffer log_buffers = 18;</code>
+     */
+    com.android.server.os.LinphoneTombstoneProtos.LogBuffer getLogBuffers(int index);
+    /**
+     * <code>repeated .LogBuffer log_buffers = 18;</code>
+     */
+    int getLogBuffersCount();
+
+    /**
+     * <code>repeated .FD open_fds = 19;</code>
+     */
+    java.util.List<com.android.server.os.LinphoneTombstoneProtos.FD> 
+        getOpenFdsList();
+    /**
+     * <code>repeated .FD open_fds = 19;</code>
+     */
+    com.android.server.os.LinphoneTombstoneProtos.FD getOpenFds(int index);
+    /**
+     * <code>repeated .FD open_fds = 19;</code>
+     */
+    int getOpenFdsCount();
+  }
+  /**
+   * Protobuf type {@code Tombstone}
+   */
+  public  static final class Tombstone extends
+      com.google.protobuf.GeneratedMessageLite<
+          Tombstone, Tombstone.Builder> implements
+      // @@protoc_insertion_point(message_implements:Tombstone)
+      TombstoneOrBuilder {
+    private Tombstone() {
+      buildFingerprint_ = "";
+      revision_ = "";
+      timestamp_ = "";
+      selinuxLabel_ = "";
+      commandLine_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
+      abortMessage_ = "";
+      crashDetails_ = emptyProtobufList();
+      causes_ = emptyProtobufList();
+      memoryMappings_ = emptyProtobufList();
+      logBuffers_ = emptyProtobufList();
+      openFds_ = emptyProtobufList();
+    }
+    public static final int ARCH_FIELD_NUMBER = 1;
+    private int arch_;
+    /**
+     * <code>.Architecture arch = 1;</code>
+     * @return The enum numeric value on the wire for arch.
+     */
+    @java.lang.Override
+    public int getArchValue() {
+      return arch_;
+    }
+    /**
+     * <code>.Architecture arch = 1;</code>
+     * @return The arch.
+     */
+    @java.lang.Override
+    public com.android.server.os.LinphoneTombstoneProtos.Architecture getArch() {
+      com.android.server.os.LinphoneTombstoneProtos.Architecture result = com.android.server.os.LinphoneTombstoneProtos.Architecture.forNumber(arch_);
+      return result == null ? com.android.server.os.LinphoneTombstoneProtos.Architecture.UNRECOGNIZED : result;
+    }
+    /**
+     * <code>.Architecture arch = 1;</code>
+     * @param value The enum numeric value on the wire for arch to set.
+     */
+    private void setArchValue(int value) {
+        arch_ = value;
+    }
+    /**
+     * <code>.Architecture arch = 1;</code>
+     * @param value The arch to set.
+     */
+    private void setArch(com.android.server.os.LinphoneTombstoneProtos.Architecture value) {
+      arch_ = value.getNumber();
+      
+    }
+    /**
+     * <code>.Architecture arch = 1;</code>
+     */
+    private void clearArch() {
+      
+      arch_ = 0;
+    }
+
+    public static final int BUILD_FINGERPRINT_FIELD_NUMBER = 2;
+    private java.lang.String buildFingerprint_;
+    /**
+     * <code>string build_fingerprint = 2;</code>
+     * @return The buildFingerprint.
+     */
+    @java.lang.Override
+    public java.lang.String getBuildFingerprint() {
+      return buildFingerprint_;
+    }
+    /**
+     * <code>string build_fingerprint = 2;</code>
+     * @return The bytes for buildFingerprint.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getBuildFingerprintBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(buildFingerprint_);
+    }
+    /**
+     * <code>string build_fingerprint = 2;</code>
+     * @param value The buildFingerprint to set.
+     */
+    private void setBuildFingerprint(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      buildFingerprint_ = value;
+    }
+    /**
+     * <code>string build_fingerprint = 2;</code>
+     */
+    private void clearBuildFingerprint() {
+      
+      buildFingerprint_ = getDefaultInstance().getBuildFingerprint();
+    }
+    /**
+     * <code>string build_fingerprint = 2;</code>
+     * @param value The bytes for buildFingerprint to set.
+     */
+    private void setBuildFingerprintBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      buildFingerprint_ = value.toStringUtf8();
+      
+    }
+
+    public static final int REVISION_FIELD_NUMBER = 3;
+    private java.lang.String revision_;
+    /**
+     * <code>string revision = 3;</code>
+     * @return The revision.
+     */
+    @java.lang.Override
+    public java.lang.String getRevision() {
+      return revision_;
+    }
+    /**
+     * <code>string revision = 3;</code>
+     * @return The bytes for revision.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getRevisionBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(revision_);
+    }
+    /**
+     * <code>string revision = 3;</code>
+     * @param value The revision to set.
+     */
+    private void setRevision(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      revision_ = value;
+    }
+    /**
+     * <code>string revision = 3;</code>
+     */
+    private void clearRevision() {
+      
+      revision_ = getDefaultInstance().getRevision();
+    }
+    /**
+     * <code>string revision = 3;</code>
+     * @param value The bytes for revision to set.
+     */
+    private void setRevisionBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      revision_ = value.toStringUtf8();
+      
+    }
+
+    public static final int TIMESTAMP_FIELD_NUMBER = 4;
+    private java.lang.String timestamp_;
+    /**
+     * <code>string timestamp = 4;</code>
+     * @return The timestamp.
+     */
+    @java.lang.Override
+    public java.lang.String getTimestamp() {
+      return timestamp_;
+    }
+    /**
+     * <code>string timestamp = 4;</code>
+     * @return The bytes for timestamp.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getTimestampBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(timestamp_);
+    }
+    /**
+     * <code>string timestamp = 4;</code>
+     * @param value The timestamp to set.
+     */
+    private void setTimestamp(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      timestamp_ = value;
+    }
+    /**
+     * <code>string timestamp = 4;</code>
+     */
+    private void clearTimestamp() {
+      
+      timestamp_ = getDefaultInstance().getTimestamp();
+    }
+    /**
+     * <code>string timestamp = 4;</code>
+     * @param value The bytes for timestamp to set.
+     */
+    private void setTimestampBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      timestamp_ = value.toStringUtf8();
+      
+    }
+
+    public static final int PID_FIELD_NUMBER = 5;
+    private int pid_;
+    /**
+     * <code>uint32 pid = 5;</code>
+     * @return The pid.
+     */
+    @java.lang.Override
+    public int getPid() {
+      return pid_;
+    }
+    /**
+     * <code>uint32 pid = 5;</code>
+     * @param value The pid to set.
+     */
+    private void setPid(int value) {
+      
+      pid_ = value;
+    }
+    /**
+     * <code>uint32 pid = 5;</code>
+     */
+    private void clearPid() {
+      
+      pid_ = 0;
+    }
+
+    public static final int TID_FIELD_NUMBER = 6;
+    private int tid_;
+    /**
+     * <code>uint32 tid = 6;</code>
+     * @return The tid.
+     */
+    @java.lang.Override
+    public int getTid() {
+      return tid_;
+    }
+    /**
+     * <code>uint32 tid = 6;</code>
+     * @param value The tid to set.
+     */
+    private void setTid(int value) {
+      
+      tid_ = value;
+    }
+    /**
+     * <code>uint32 tid = 6;</code>
+     */
+    private void clearTid() {
+      
+      tid_ = 0;
+    }
+
+    public static final int UID_FIELD_NUMBER = 7;
+    private int uid_;
+    /**
+     * <code>uint32 uid = 7;</code>
+     * @return The uid.
+     */
+    @java.lang.Override
+    public int getUid() {
+      return uid_;
+    }
+    /**
+     * <code>uint32 uid = 7;</code>
+     * @param value The uid to set.
+     */
+    private void setUid(int value) {
+      
+      uid_ = value;
+    }
+    /**
+     * <code>uint32 uid = 7;</code>
+     */
+    private void clearUid() {
+      
+      uid_ = 0;
+    }
+
+    public static final int SELINUX_LABEL_FIELD_NUMBER = 8;
+    private java.lang.String selinuxLabel_;
+    /**
+     * <code>string selinux_label = 8;</code>
+     * @return The selinuxLabel.
+     */
+    @java.lang.Override
+    public java.lang.String getSelinuxLabel() {
+      return selinuxLabel_;
+    }
+    /**
+     * <code>string selinux_label = 8;</code>
+     * @return The bytes for selinuxLabel.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getSelinuxLabelBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(selinuxLabel_);
+    }
+    /**
+     * <code>string selinux_label = 8;</code>
+     * @param value The selinuxLabel to set.
+     */
+    private void setSelinuxLabel(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      selinuxLabel_ = value;
+    }
+    /**
+     * <code>string selinux_label = 8;</code>
+     */
+    private void clearSelinuxLabel() {
+      
+      selinuxLabel_ = getDefaultInstance().getSelinuxLabel();
+    }
+    /**
+     * <code>string selinux_label = 8;</code>
+     * @param value The bytes for selinuxLabel to set.
+     */
+    private void setSelinuxLabelBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      selinuxLabel_ = value.toStringUtf8();
+      
+    }
+
+    public static final int COMMAND_LINE_FIELD_NUMBER = 9;
+    private com.google.protobuf.Internal.ProtobufList<java.lang.String> commandLine_;
+    /**
+     * <code>repeated string command_line = 9;</code>
+     * @return A list containing the commandLine.
+     */
+    @java.lang.Override
+    public java.util.List<java.lang.String> getCommandLineList() {
+      return commandLine_;
+    }
+    /**
+     * <code>repeated string command_line = 9;</code>
+     * @return The count of commandLine.
+     */
+    @java.lang.Override
+    public int getCommandLineCount() {
+      return commandLine_.size();
+    }
+    /**
+     * <code>repeated string command_line = 9;</code>
+     * @param index The index of the element to return.
+     * @return The commandLine at the given index.
+     */
+    @java.lang.Override
+    public java.lang.String getCommandLine(int index) {
+      return commandLine_.get(index);
+    }
+    /**
+     * <code>repeated string command_line = 9;</code>
+     * @param index The index of the value to return.
+     * @return The bytes of the commandLine at the given index.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getCommandLineBytes(int index) {
+      return com.google.protobuf.ByteString.copyFromUtf8(
+          commandLine_.get(index));
+    }
+    private void ensureCommandLineIsMutable() {
+      com.google.protobuf.Internal.ProtobufList<java.lang.String> tmp =
+          commandLine_;  if (!tmp.isModifiable()) {
+        commandLine_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
+       }
+    }
+    /**
+     * <code>repeated string command_line = 9;</code>
+     * @param index The index to set the value at.
+     * @param value The commandLine to set.
+     */
+    private void setCommandLine(
+        int index, java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  ensureCommandLineIsMutable();
+      commandLine_.set(index, value);
+    }
+    /**
+     * <code>repeated string command_line = 9;</code>
+     * @param value The commandLine to add.
+     */
+    private void addCommandLine(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  ensureCommandLineIsMutable();
+      commandLine_.add(value);
+    }
+    /**
+     * <code>repeated string command_line = 9;</code>
+     * @param values The commandLine to add.
+     */
+    private void addAllCommandLine(
+        java.lang.Iterable<java.lang.String> values) {
+      ensureCommandLineIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, commandLine_);
+    }
+    /**
+     * <code>repeated string command_line = 9;</code>
+     */
+    private void clearCommandLine() {
+      commandLine_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
+    }
+    /**
+     * <code>repeated string command_line = 9;</code>
+     * @param value The bytes of the commandLine to add.
+     */
+    private void addCommandLineBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      ensureCommandLineIsMutable();
+      commandLine_.add(value.toStringUtf8());
+    }
+
+    public static final int PROCESS_UPTIME_FIELD_NUMBER = 20;
+    private int processUptime_;
+    /**
+     * <pre>
+     * Process uptime in seconds.
+     * </pre>
+     *
+     * <code>uint32 process_uptime = 20;</code>
+     * @return The processUptime.
+     */
+    @java.lang.Override
+    public int getProcessUptime() {
+      return processUptime_;
+    }
+    /**
+     * <pre>
+     * Process uptime in seconds.
+     * </pre>
+     *
+     * <code>uint32 process_uptime = 20;</code>
+     * @param value The processUptime to set.
+     */
+    private void setProcessUptime(int value) {
+      
+      processUptime_ = value;
+    }
+    /**
+     * <pre>
+     * Process uptime in seconds.
+     * </pre>
+     *
+     * <code>uint32 process_uptime = 20;</code>
+     */
+    private void clearProcessUptime() {
+      
+      processUptime_ = 0;
+    }
+
+    public static final int SIGNAL_INFO_FIELD_NUMBER = 10;
+    private com.android.server.os.LinphoneTombstoneProtos.Signal signalInfo_;
+    /**
+     * <code>.Signal signal_info = 10;</code>
+     */
+    @java.lang.Override
+    public boolean hasSignalInfo() {
+      return signalInfo_ != null;
+    }
+    /**
+     * <code>.Signal signal_info = 10;</code>
+     */
+    @java.lang.Override
+    public com.android.server.os.LinphoneTombstoneProtos.Signal getSignalInfo() {
+      return signalInfo_ == null ? com.android.server.os.LinphoneTombstoneProtos.Signal.getDefaultInstance() : signalInfo_;
+    }
+    /**
+     * <code>.Signal signal_info = 10;</code>
+     */
+    private void setSignalInfo(com.android.server.os.LinphoneTombstoneProtos.Signal value) {
+      value.getClass();
+  signalInfo_ = value;
+      
+      }
+    /**
+     * <code>.Signal signal_info = 10;</code>
+     */
+    @java.lang.SuppressWarnings({"ReferenceEquality"})
+    private void mergeSignalInfo(com.android.server.os.LinphoneTombstoneProtos.Signal value) {
+      value.getClass();
+  if (signalInfo_ != null &&
+          signalInfo_ != com.android.server.os.LinphoneTombstoneProtos.Signal.getDefaultInstance()) {
+        signalInfo_ =
+          com.android.server.os.LinphoneTombstoneProtos.Signal.newBuilder(signalInfo_).mergeFrom(value).buildPartial();
+      } else {
+        signalInfo_ = value;
+      }
+      
+    }
+    /**
+     * <code>.Signal signal_info = 10;</code>
+     */
+    private void clearSignalInfo() {  signalInfo_ = null;
+      
+    }
+
+    public static final int ABORT_MESSAGE_FIELD_NUMBER = 14;
+    private java.lang.String abortMessage_;
+    /**
+     * <code>string abort_message = 14;</code>
+     * @return The abortMessage.
+     */
+    @java.lang.Override
+    public java.lang.String getAbortMessage() {
+      return abortMessage_;
+    }
+    /**
+     * <code>string abort_message = 14;</code>
+     * @return The bytes for abortMessage.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getAbortMessageBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(abortMessage_);
+    }
+    /**
+     * <code>string abort_message = 14;</code>
+     * @param value The abortMessage to set.
+     */
+    private void setAbortMessage(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      abortMessage_ = value;
+    }
+    /**
+     * <code>string abort_message = 14;</code>
+     */
+    private void clearAbortMessage() {
+      
+      abortMessage_ = getDefaultInstance().getAbortMessage();
+    }
+    /**
+     * <code>string abort_message = 14;</code>
+     * @param value The bytes for abortMessage to set.
+     */
+    private void setAbortMessageBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      abortMessage_ = value.toStringUtf8();
+      
+    }
+
+    public static final int CRASH_DETAILS_FIELD_NUMBER = 21;
+    private com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.CrashDetail> crashDetails_;
+    /**
+     * <code>repeated .CrashDetail crash_details = 21;</code>
+     */
+    @java.lang.Override
+    public java.util.List<com.android.server.os.LinphoneTombstoneProtos.CrashDetail> getCrashDetailsList() {
+      return crashDetails_;
+    }
+    /**
+     * <code>repeated .CrashDetail crash_details = 21;</code>
+     */
+    public java.util.List<? extends com.android.server.os.LinphoneTombstoneProtos.CrashDetailOrBuilder> 
+        getCrashDetailsOrBuilderList() {
+      return crashDetails_;
+    }
+    /**
+     * <code>repeated .CrashDetail crash_details = 21;</code>
+     */
+    @java.lang.Override
+    public int getCrashDetailsCount() {
+      return crashDetails_.size();
+    }
+    /**
+     * <code>repeated .CrashDetail crash_details = 21;</code>
+     */
+    @java.lang.Override
+    public com.android.server.os.LinphoneTombstoneProtos.CrashDetail getCrashDetails(int index) {
+      return crashDetails_.get(index);
+    }
+    /**
+     * <code>repeated .CrashDetail crash_details = 21;</code>
+     */
+    public com.android.server.os.LinphoneTombstoneProtos.CrashDetailOrBuilder getCrashDetailsOrBuilder(
+        int index) {
+      return crashDetails_.get(index);
+    }
+    private void ensureCrashDetailsIsMutable() {
+      com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.CrashDetail> tmp = crashDetails_;
+      if (!tmp.isModifiable()) {
+        crashDetails_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
+       }
+    }
+
+    /**
+     * <code>repeated .CrashDetail crash_details = 21;</code>
+     */
+    private void setCrashDetails(
+        int index, com.android.server.os.LinphoneTombstoneProtos.CrashDetail value) {
+      value.getClass();
+  ensureCrashDetailsIsMutable();
+      crashDetails_.set(index, value);
+    }
+    /**
+     * <code>repeated .CrashDetail crash_details = 21;</code>
+     */
+    private void addCrashDetails(com.android.server.os.LinphoneTombstoneProtos.CrashDetail value) {
+      value.getClass();
+  ensureCrashDetailsIsMutable();
+      crashDetails_.add(value);
+    }
+    /**
+     * <code>repeated .CrashDetail crash_details = 21;</code>
+     */
+    private void addCrashDetails(
+        int index, com.android.server.os.LinphoneTombstoneProtos.CrashDetail value) {
+      value.getClass();
+  ensureCrashDetailsIsMutable();
+      crashDetails_.add(index, value);
+    }
+    /**
+     * <code>repeated .CrashDetail crash_details = 21;</code>
+     */
+    private void addAllCrashDetails(
+        java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.CrashDetail> values) {
+      ensureCrashDetailsIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, crashDetails_);
+    }
+    /**
+     * <code>repeated .CrashDetail crash_details = 21;</code>
+     */
+    private void clearCrashDetails() {
+      crashDetails_ = emptyProtobufList();
+    }
+    /**
+     * <code>repeated .CrashDetail crash_details = 21;</code>
+     */
+    private void removeCrashDetails(int index) {
+      ensureCrashDetailsIsMutable();
+      crashDetails_.remove(index);
+    }
+
+    public static final int CAUSES_FIELD_NUMBER = 15;
+    private com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.Cause> causes_;
+    /**
+     * <code>repeated .Cause causes = 15;</code>
+     */
+    @java.lang.Override
+    public java.util.List<com.android.server.os.LinphoneTombstoneProtos.Cause> getCausesList() {
+      return causes_;
+    }
+    /**
+     * <code>repeated .Cause causes = 15;</code>
+     */
+    public java.util.List<? extends com.android.server.os.LinphoneTombstoneProtos.CauseOrBuilder> 
+        getCausesOrBuilderList() {
+      return causes_;
+    }
+    /**
+     * <code>repeated .Cause causes = 15;</code>
+     */
+    @java.lang.Override
+    public int getCausesCount() {
+      return causes_.size();
+    }
+    /**
+     * <code>repeated .Cause causes = 15;</code>
+     */
+    @java.lang.Override
+    public com.android.server.os.LinphoneTombstoneProtos.Cause getCauses(int index) {
+      return causes_.get(index);
+    }
+    /**
+     * <code>repeated .Cause causes = 15;</code>
+     */
+    public com.android.server.os.LinphoneTombstoneProtos.CauseOrBuilder getCausesOrBuilder(
+        int index) {
+      return causes_.get(index);
+    }
+    private void ensureCausesIsMutable() {
+      com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.Cause> tmp = causes_;
+      if (!tmp.isModifiable()) {
+        causes_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
+       }
+    }
+
+    /**
+     * <code>repeated .Cause causes = 15;</code>
+     */
+    private void setCauses(
+        int index, com.android.server.os.LinphoneTombstoneProtos.Cause value) {
+      value.getClass();
+  ensureCausesIsMutable();
+      causes_.set(index, value);
+    }
+    /**
+     * <code>repeated .Cause causes = 15;</code>
+     */
+    private void addCauses(com.android.server.os.LinphoneTombstoneProtos.Cause value) {
+      value.getClass();
+  ensureCausesIsMutable();
+      causes_.add(value);
+    }
+    /**
+     * <code>repeated .Cause causes = 15;</code>
+     */
+    private void addCauses(
+        int index, com.android.server.os.LinphoneTombstoneProtos.Cause value) {
+      value.getClass();
+  ensureCausesIsMutable();
+      causes_.add(index, value);
+    }
+    /**
+     * <code>repeated .Cause causes = 15;</code>
+     */
+    private void addAllCauses(
+        java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.Cause> values) {
+      ensureCausesIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, causes_);
+    }
+    /**
+     * <code>repeated .Cause causes = 15;</code>
+     */
+    private void clearCauses() {
+      causes_ = emptyProtobufList();
+    }
+    /**
+     * <code>repeated .Cause causes = 15;</code>
+     */
+    private void removeCauses(int index) {
+      ensureCausesIsMutable();
+      causes_.remove(index);
+    }
+
+    public static final int THREADS_FIELD_NUMBER = 16;
+    private static final class ThreadsDefaultEntryHolder {
+      static final com.google.protobuf.MapEntryLite<
+          java.lang.Integer, com.android.server.os.LinphoneTombstoneProtos.Thread> defaultEntry =
+              com.google.protobuf.MapEntryLite
+              .<java.lang.Integer, com.android.server.os.LinphoneTombstoneProtos.Thread>newDefaultInstance(
+                  com.google.protobuf.WireFormat.FieldType.UINT32,
+                  0,
+                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
+                  com.android.server.os.LinphoneTombstoneProtos.Thread.getDefaultInstance());
+    }
+    private com.google.protobuf.MapFieldLite<
+        java.lang.Integer, com.android.server.os.LinphoneTombstoneProtos.Thread> threads_ =
+            com.google.protobuf.MapFieldLite.emptyMapField();
+    private com.google.protobuf.MapFieldLite<java.lang.Integer, com.android.server.os.LinphoneTombstoneProtos.Thread>
+    internalGetThreads() {
+      return threads_;
+    }
+    private com.google.protobuf.MapFieldLite<java.lang.Integer, com.android.server.os.LinphoneTombstoneProtos.Thread>
+    internalGetMutableThreads() {
+      if (!threads_.isMutable()) {
+        threads_ = threads_.mutableCopy();
+      }
+      return threads_;
+    }
+    @java.lang.Override
+
+    public int getThreadsCount() {
+      return internalGetThreads().size();
+    }
+    /**
+     * <code>map&lt;uint32, .Thread&gt; threads = 16;</code>
+     */
+    @java.lang.Override
+
+    public boolean containsThreads(
+        int key) {
+      
+      return internalGetThreads().containsKey(key);
+    }
+    /**
+     * Use {@link #getThreadsMap()} instead.
+     */
+    @java.lang.Override
+    @java.lang.Deprecated
+    public java.util.Map<java.lang.Integer, com.android.server.os.LinphoneTombstoneProtos.Thread> getThreads() {
+      return getThreadsMap();
+    }
+    /**
+     * <code>map&lt;uint32, .Thread&gt; threads = 16;</code>
+     */
+    @java.lang.Override
+
+    public java.util.Map<java.lang.Integer, com.android.server.os.LinphoneTombstoneProtos.Thread> getThreadsMap() {
+      return java.util.Collections.unmodifiableMap(
+          internalGetThreads());
+    }
+    /**
+     * <code>map&lt;uint32, .Thread&gt; threads = 16;</code>
+     */
+    @java.lang.Override
+
+    public com.android.server.os.LinphoneTombstoneProtos.Thread getThreadsOrDefault(
+        int key,
+        com.android.server.os.LinphoneTombstoneProtos.Thread defaultValue) {
+      
+      java.util.Map<java.lang.Integer, com.android.server.os.LinphoneTombstoneProtos.Thread> map =
+          internalGetThreads();
+      return map.containsKey(key) ? map.get(key) : defaultValue;
+    }
+    /**
+     * <code>map&lt;uint32, .Thread&gt; threads = 16;</code>
+     */
+    @java.lang.Override
+
+    public com.android.server.os.LinphoneTombstoneProtos.Thread getThreadsOrThrow(
+        int key) {
+      
+      java.util.Map<java.lang.Integer, com.android.server.os.LinphoneTombstoneProtos.Thread> map =
+          internalGetThreads();
+      if (!map.containsKey(key)) {
+        throw new java.lang.IllegalArgumentException();
+      }
+      return map.get(key);
+    }
+    /**
+     * <code>map&lt;uint32, .Thread&gt; threads = 16;</code>
+     */
+    private java.util.Map<java.lang.Integer, com.android.server.os.LinphoneTombstoneProtos.Thread>
+    getMutableThreadsMap() {
+      return internalGetMutableThreads();
+    }
+
+    public static final int MEMORY_MAPPINGS_FIELD_NUMBER = 17;
+    private com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.MemoryMapping> memoryMappings_;
+    /**
+     * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+     */
+    @java.lang.Override
+    public java.util.List<com.android.server.os.LinphoneTombstoneProtos.MemoryMapping> getMemoryMappingsList() {
+      return memoryMappings_;
+    }
+    /**
+     * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+     */
+    public java.util.List<? extends com.android.server.os.LinphoneTombstoneProtos.MemoryMappingOrBuilder> 
+        getMemoryMappingsOrBuilderList() {
+      return memoryMappings_;
+    }
+    /**
+     * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+     */
+    @java.lang.Override
+    public int getMemoryMappingsCount() {
+      return memoryMappings_.size();
+    }
+    /**
+     * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+     */
+    @java.lang.Override
+    public com.android.server.os.LinphoneTombstoneProtos.MemoryMapping getMemoryMappings(int index) {
+      return memoryMappings_.get(index);
+    }
+    /**
+     * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+     */
+    public com.android.server.os.LinphoneTombstoneProtos.MemoryMappingOrBuilder getMemoryMappingsOrBuilder(
+        int index) {
+      return memoryMappings_.get(index);
+    }
+    private void ensureMemoryMappingsIsMutable() {
+      com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.MemoryMapping> tmp = memoryMappings_;
+      if (!tmp.isModifiable()) {
+        memoryMappings_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
+       }
+    }
+
+    /**
+     * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+     */
+    private void setMemoryMappings(
+        int index, com.android.server.os.LinphoneTombstoneProtos.MemoryMapping value) {
+      value.getClass();
+  ensureMemoryMappingsIsMutable();
+      memoryMappings_.set(index, value);
+    }
+    /**
+     * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+     */
+    private void addMemoryMappings(com.android.server.os.LinphoneTombstoneProtos.MemoryMapping value) {
+      value.getClass();
+  ensureMemoryMappingsIsMutable();
+      memoryMappings_.add(value);
+    }
+    /**
+     * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+     */
+    private void addMemoryMappings(
+        int index, com.android.server.os.LinphoneTombstoneProtos.MemoryMapping value) {
+      value.getClass();
+  ensureMemoryMappingsIsMutable();
+      memoryMappings_.add(index, value);
+    }
+    /**
+     * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+     */
+    private void addAllMemoryMappings(
+        java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.MemoryMapping> values) {
+      ensureMemoryMappingsIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, memoryMappings_);
+    }
+    /**
+     * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+     */
+    private void clearMemoryMappings() {
+      memoryMappings_ = emptyProtobufList();
+    }
+    /**
+     * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+     */
+    private void removeMemoryMappings(int index) {
+      ensureMemoryMappingsIsMutable();
+      memoryMappings_.remove(index);
+    }
+
+    public static final int LOG_BUFFERS_FIELD_NUMBER = 18;
+    private com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.LogBuffer> logBuffers_;
+    /**
+     * <code>repeated .LogBuffer log_buffers = 18;</code>
+     */
+    @java.lang.Override
+    public java.util.List<com.android.server.os.LinphoneTombstoneProtos.LogBuffer> getLogBuffersList() {
+      return logBuffers_;
+    }
+    /**
+     * <code>repeated .LogBuffer log_buffers = 18;</code>
+     */
+    public java.util.List<? extends com.android.server.os.LinphoneTombstoneProtos.LogBufferOrBuilder> 
+        getLogBuffersOrBuilderList() {
+      return logBuffers_;
+    }
+    /**
+     * <code>repeated .LogBuffer log_buffers = 18;</code>
+     */
+    @java.lang.Override
+    public int getLogBuffersCount() {
+      return logBuffers_.size();
+    }
+    /**
+     * <code>repeated .LogBuffer log_buffers = 18;</code>
+     */
+    @java.lang.Override
+    public com.android.server.os.LinphoneTombstoneProtos.LogBuffer getLogBuffers(int index) {
+      return logBuffers_.get(index);
+    }
+    /**
+     * <code>repeated .LogBuffer log_buffers = 18;</code>
+     */
+    public com.android.server.os.LinphoneTombstoneProtos.LogBufferOrBuilder getLogBuffersOrBuilder(
+        int index) {
+      return logBuffers_.get(index);
+    }
+    private void ensureLogBuffersIsMutable() {
+      com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.LogBuffer> tmp = logBuffers_;
+      if (!tmp.isModifiable()) {
+        logBuffers_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
+       }
+    }
+
+    /**
+     * <code>repeated .LogBuffer log_buffers = 18;</code>
+     */
+    private void setLogBuffers(
+        int index, com.android.server.os.LinphoneTombstoneProtos.LogBuffer value) {
+      value.getClass();
+  ensureLogBuffersIsMutable();
+      logBuffers_.set(index, value);
+    }
+    /**
+     * <code>repeated .LogBuffer log_buffers = 18;</code>
+     */
+    private void addLogBuffers(com.android.server.os.LinphoneTombstoneProtos.LogBuffer value) {
+      value.getClass();
+  ensureLogBuffersIsMutable();
+      logBuffers_.add(value);
+    }
+    /**
+     * <code>repeated .LogBuffer log_buffers = 18;</code>
+     */
+    private void addLogBuffers(
+        int index, com.android.server.os.LinphoneTombstoneProtos.LogBuffer value) {
+      value.getClass();
+  ensureLogBuffersIsMutable();
+      logBuffers_.add(index, value);
+    }
+    /**
+     * <code>repeated .LogBuffer log_buffers = 18;</code>
+     */
+    private void addAllLogBuffers(
+        java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.LogBuffer> values) {
+      ensureLogBuffersIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, logBuffers_);
+    }
+    /**
+     * <code>repeated .LogBuffer log_buffers = 18;</code>
+     */
+    private void clearLogBuffers() {
+      logBuffers_ = emptyProtobufList();
+    }
+    /**
+     * <code>repeated .LogBuffer log_buffers = 18;</code>
+     */
+    private void removeLogBuffers(int index) {
+      ensureLogBuffersIsMutable();
+      logBuffers_.remove(index);
+    }
+
+    public static final int OPEN_FDS_FIELD_NUMBER = 19;
+    private com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.FD> openFds_;
+    /**
+     * <code>repeated .FD open_fds = 19;</code>
+     */
+    @java.lang.Override
+    public java.util.List<com.android.server.os.LinphoneTombstoneProtos.FD> getOpenFdsList() {
+      return openFds_;
+    }
+    /**
+     * <code>repeated .FD open_fds = 19;</code>
+     */
+    public java.util.List<? extends com.android.server.os.LinphoneTombstoneProtos.FDOrBuilder> 
+        getOpenFdsOrBuilderList() {
+      return openFds_;
+    }
+    /**
+     * <code>repeated .FD open_fds = 19;</code>
+     */
+    @java.lang.Override
+    public int getOpenFdsCount() {
+      return openFds_.size();
+    }
+    /**
+     * <code>repeated .FD open_fds = 19;</code>
+     */
+    @java.lang.Override
+    public com.android.server.os.LinphoneTombstoneProtos.FD getOpenFds(int index) {
+      return openFds_.get(index);
+    }
+    /**
+     * <code>repeated .FD open_fds = 19;</code>
+     */
+    public com.android.server.os.LinphoneTombstoneProtos.FDOrBuilder getOpenFdsOrBuilder(
+        int index) {
+      return openFds_.get(index);
+    }
+    private void ensureOpenFdsIsMutable() {
+      com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.FD> tmp = openFds_;
+      if (!tmp.isModifiable()) {
+        openFds_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
+       }
+    }
+
+    /**
+     * <code>repeated .FD open_fds = 19;</code>
+     */
+    private void setOpenFds(
+        int index, com.android.server.os.LinphoneTombstoneProtos.FD value) {
+      value.getClass();
+  ensureOpenFdsIsMutable();
+      openFds_.set(index, value);
+    }
+    /**
+     * <code>repeated .FD open_fds = 19;</code>
+     */
+    private void addOpenFds(com.android.server.os.LinphoneTombstoneProtos.FD value) {
+      value.getClass();
+  ensureOpenFdsIsMutable();
+      openFds_.add(value);
+    }
+    /**
+     * <code>repeated .FD open_fds = 19;</code>
+     */
+    private void addOpenFds(
+        int index, com.android.server.os.LinphoneTombstoneProtos.FD value) {
+      value.getClass();
+  ensureOpenFdsIsMutable();
+      openFds_.add(index, value);
+    }
+    /**
+     * <code>repeated .FD open_fds = 19;</code>
+     */
+    private void addAllOpenFds(
+        java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.FD> values) {
+      ensureOpenFdsIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, openFds_);
+    }
+    /**
+     * <code>repeated .FD open_fds = 19;</code>
+     */
+    private void clearOpenFds() {
+      openFds_ = emptyProtobufList();
+    }
+    /**
+     * <code>repeated .FD open_fds = 19;</code>
+     */
+    private void removeOpenFds(int index) {
+      ensureOpenFdsIsMutable();
+      openFds_.remove(index);
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.Tombstone parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Tombstone parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Tombstone parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Tombstone parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Tombstone parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Tombstone parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Tombstone parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Tombstone parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Tombstone parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Tombstone parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Tombstone parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Tombstone parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return (Builder) DEFAULT_INSTANCE.createBuilder();
+    }
+    public static Builder newBuilder(com.android.server.os.LinphoneTombstoneProtos.Tombstone prototype) {
+      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
+    }
+
+    /**
+     * Protobuf type {@code Tombstone}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageLite.Builder<
+          com.android.server.os.LinphoneTombstoneProtos.Tombstone, Builder> implements
+        // @@protoc_insertion_point(builder_implements:Tombstone)
+        com.android.server.os.LinphoneTombstoneProtos.TombstoneOrBuilder {
+      // Construct using com.android.server.os.LinphoneTombstoneProtos.Tombstone.newBuilder()
+      private Builder() {
+        super(DEFAULT_INSTANCE);
+      }
+
+
+      /**
+       * <code>.Architecture arch = 1;</code>
+       * @return The enum numeric value on the wire for arch.
+       */
+      @java.lang.Override
+      public int getArchValue() {
+        return instance.getArchValue();
+      }
+      /**
+       * <code>.Architecture arch = 1;</code>
+       * @param value The arch to set.
+       * @return This builder for chaining.
+       */
+      public Builder setArchValue(int value) {
+        copyOnWrite();
+        instance.setArchValue(value);
+        return this;
+      }
+      /**
+       * <code>.Architecture arch = 1;</code>
+       * @return The arch.
+       */
+      @java.lang.Override
+      public com.android.server.os.LinphoneTombstoneProtos.Architecture getArch() {
+        return instance.getArch();
+      }
+      /**
+       * <code>.Architecture arch = 1;</code>
+       * @param value The enum numeric value on the wire for arch to set.
+       * @return This builder for chaining.
+       */
+      public Builder setArch(com.android.server.os.LinphoneTombstoneProtos.Architecture value) {
+        copyOnWrite();
+        instance.setArch(value);
+        return this;
+      }
+      /**
+       * <code>.Architecture arch = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearArch() {
+        copyOnWrite();
+        instance.clearArch();
+        return this;
+      }
+
+      /**
+       * <code>string build_fingerprint = 2;</code>
+       * @return The buildFingerprint.
+       */
+      @java.lang.Override
+      public java.lang.String getBuildFingerprint() {
+        return instance.getBuildFingerprint();
+      }
+      /**
+       * <code>string build_fingerprint = 2;</code>
+       * @return The bytes for buildFingerprint.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getBuildFingerprintBytes() {
+        return instance.getBuildFingerprintBytes();
+      }
+      /**
+       * <code>string build_fingerprint = 2;</code>
+       * @param value The buildFingerprint to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBuildFingerprint(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setBuildFingerprint(value);
+        return this;
+      }
+      /**
+       * <code>string build_fingerprint = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearBuildFingerprint() {
+        copyOnWrite();
+        instance.clearBuildFingerprint();
+        return this;
+      }
+      /**
+       * <code>string build_fingerprint = 2;</code>
+       * @param value The bytes for buildFingerprint to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBuildFingerprintBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setBuildFingerprintBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>string revision = 3;</code>
+       * @return The revision.
+       */
+      @java.lang.Override
+      public java.lang.String getRevision() {
+        return instance.getRevision();
+      }
+      /**
+       * <code>string revision = 3;</code>
+       * @return The bytes for revision.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getRevisionBytes() {
+        return instance.getRevisionBytes();
+      }
+      /**
+       * <code>string revision = 3;</code>
+       * @param value The revision to set.
+       * @return This builder for chaining.
+       */
+      public Builder setRevision(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setRevision(value);
+        return this;
+      }
+      /**
+       * <code>string revision = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearRevision() {
+        copyOnWrite();
+        instance.clearRevision();
+        return this;
+      }
+      /**
+       * <code>string revision = 3;</code>
+       * @param value The bytes for revision to set.
+       * @return This builder for chaining.
+       */
+      public Builder setRevisionBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setRevisionBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>string timestamp = 4;</code>
+       * @return The timestamp.
+       */
+      @java.lang.Override
+      public java.lang.String getTimestamp() {
+        return instance.getTimestamp();
+      }
+      /**
+       * <code>string timestamp = 4;</code>
+       * @return The bytes for timestamp.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getTimestampBytes() {
+        return instance.getTimestampBytes();
+      }
+      /**
+       * <code>string timestamp = 4;</code>
+       * @param value The timestamp to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTimestamp(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setTimestamp(value);
+        return this;
+      }
+      /**
+       * <code>string timestamp = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearTimestamp() {
+        copyOnWrite();
+        instance.clearTimestamp();
+        return this;
+      }
+      /**
+       * <code>string timestamp = 4;</code>
+       * @param value The bytes for timestamp to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTimestampBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setTimestampBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>uint32 pid = 5;</code>
+       * @return The pid.
+       */
+      @java.lang.Override
+      public int getPid() {
+        return instance.getPid();
+      }
+      /**
+       * <code>uint32 pid = 5;</code>
+       * @param value The pid to set.
+       * @return This builder for chaining.
+       */
+      public Builder setPid(int value) {
+        copyOnWrite();
+        instance.setPid(value);
+        return this;
+      }
+      /**
+       * <code>uint32 pid = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearPid() {
+        copyOnWrite();
+        instance.clearPid();
+        return this;
+      }
+
+      /**
+       * <code>uint32 tid = 6;</code>
+       * @return The tid.
+       */
+      @java.lang.Override
+      public int getTid() {
+        return instance.getTid();
+      }
+      /**
+       * <code>uint32 tid = 6;</code>
+       * @param value The tid to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTid(int value) {
+        copyOnWrite();
+        instance.setTid(value);
+        return this;
+      }
+      /**
+       * <code>uint32 tid = 6;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearTid() {
+        copyOnWrite();
+        instance.clearTid();
+        return this;
+      }
+
+      /**
+       * <code>uint32 uid = 7;</code>
+       * @return The uid.
+       */
+      @java.lang.Override
+      public int getUid() {
+        return instance.getUid();
+      }
+      /**
+       * <code>uint32 uid = 7;</code>
+       * @param value The uid to set.
+       * @return This builder for chaining.
+       */
+      public Builder setUid(int value) {
+        copyOnWrite();
+        instance.setUid(value);
+        return this;
+      }
+      /**
+       * <code>uint32 uid = 7;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearUid() {
+        copyOnWrite();
+        instance.clearUid();
+        return this;
+      }
+
+      /**
+       * <code>string selinux_label = 8;</code>
+       * @return The selinuxLabel.
+       */
+      @java.lang.Override
+      public java.lang.String getSelinuxLabel() {
+        return instance.getSelinuxLabel();
+      }
+      /**
+       * <code>string selinux_label = 8;</code>
+       * @return The bytes for selinuxLabel.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getSelinuxLabelBytes() {
+        return instance.getSelinuxLabelBytes();
+      }
+      /**
+       * <code>string selinux_label = 8;</code>
+       * @param value The selinuxLabel to set.
+       * @return This builder for chaining.
+       */
+      public Builder setSelinuxLabel(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setSelinuxLabel(value);
+        return this;
+      }
+      /**
+       * <code>string selinux_label = 8;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearSelinuxLabel() {
+        copyOnWrite();
+        instance.clearSelinuxLabel();
+        return this;
+      }
+      /**
+       * <code>string selinux_label = 8;</code>
+       * @param value The bytes for selinuxLabel to set.
+       * @return This builder for chaining.
+       */
+      public Builder setSelinuxLabelBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setSelinuxLabelBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>repeated string command_line = 9;</code>
+       * @return A list containing the commandLine.
+       */
+      @java.lang.Override
+      public java.util.List<java.lang.String>
+          getCommandLineList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getCommandLineList());
+      }
+      /**
+       * <code>repeated string command_line = 9;</code>
+       * @return The count of commandLine.
+       */
+      @java.lang.Override
+      public int getCommandLineCount() {
+        return instance.getCommandLineCount();
+      }
+      /**
+       * <code>repeated string command_line = 9;</code>
+       * @param index The index of the element to return.
+       * @return The commandLine at the given index.
+       */
+      @java.lang.Override
+      public java.lang.String getCommandLine(int index) {
+        return instance.getCommandLine(index);
+      }
+      /**
+       * <code>repeated string command_line = 9;</code>
+       * @param index The index of the value to return.
+       * @return The bytes of the commandLine at the given index.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getCommandLineBytes(int index) {
+        return instance.getCommandLineBytes(index);
+      }
+      /**
+       * <code>repeated string command_line = 9;</code>
+       * @param index The index to set the value at.
+       * @param value The commandLine to set.
+       * @return This builder for chaining.
+       */
+      public Builder setCommandLine(
+          int index, java.lang.String value) {
+        copyOnWrite();
+        instance.setCommandLine(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated string command_line = 9;</code>
+       * @param value The commandLine to add.
+       * @return This builder for chaining.
+       */
+      public Builder addCommandLine(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.addCommandLine(value);
+        return this;
+      }
+      /**
+       * <code>repeated string command_line = 9;</code>
+       * @param values The commandLine to add.
+       * @return This builder for chaining.
+       */
+      public Builder addAllCommandLine(
+          java.lang.Iterable<java.lang.String> values) {
+        copyOnWrite();
+        instance.addAllCommandLine(values);
+        return this;
+      }
+      /**
+       * <code>repeated string command_line = 9;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearCommandLine() {
+        copyOnWrite();
+        instance.clearCommandLine();
+        return this;
+      }
+      /**
+       * <code>repeated string command_line = 9;</code>
+       * @param value The bytes of the commandLine to add.
+       * @return This builder for chaining.
+       */
+      public Builder addCommandLineBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.addCommandLineBytes(value);
+        return this;
+      }
+
+      /**
+       * <pre>
+       * Process uptime in seconds.
+       * </pre>
+       *
+       * <code>uint32 process_uptime = 20;</code>
+       * @return The processUptime.
+       */
+      @java.lang.Override
+      public int getProcessUptime() {
+        return instance.getProcessUptime();
+      }
+      /**
+       * <pre>
+       * Process uptime in seconds.
+       * </pre>
+       *
+       * <code>uint32 process_uptime = 20;</code>
+       * @param value The processUptime to set.
+       * @return This builder for chaining.
+       */
+      public Builder setProcessUptime(int value) {
+        copyOnWrite();
+        instance.setProcessUptime(value);
+        return this;
+      }
+      /**
+       * <pre>
+       * Process uptime in seconds.
+       * </pre>
+       *
+       * <code>uint32 process_uptime = 20;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearProcessUptime() {
+        copyOnWrite();
+        instance.clearProcessUptime();
+        return this;
+      }
+
+      /**
+       * <code>.Signal signal_info = 10;</code>
+       */
+      @java.lang.Override
+      public boolean hasSignalInfo() {
+        return instance.hasSignalInfo();
+      }
+      /**
+       * <code>.Signal signal_info = 10;</code>
+       */
+      @java.lang.Override
+      public com.android.server.os.LinphoneTombstoneProtos.Signal getSignalInfo() {
+        return instance.getSignalInfo();
+      }
+      /**
+       * <code>.Signal signal_info = 10;</code>
+       */
+      public Builder setSignalInfo(com.android.server.os.LinphoneTombstoneProtos.Signal value) {
+        copyOnWrite();
+        instance.setSignalInfo(value);
+        return this;
+        }
+      /**
+       * <code>.Signal signal_info = 10;</code>
+       */
+      public Builder setSignalInfo(
+          com.android.server.os.LinphoneTombstoneProtos.Signal.Builder builderForValue) {
+        copyOnWrite();
+        instance.setSignalInfo(builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>.Signal signal_info = 10;</code>
+       */
+      public Builder mergeSignalInfo(com.android.server.os.LinphoneTombstoneProtos.Signal value) {
+        copyOnWrite();
+        instance.mergeSignalInfo(value);
+        return this;
+      }
+      /**
+       * <code>.Signal signal_info = 10;</code>
+       */
+      public Builder clearSignalInfo() {  copyOnWrite();
+        instance.clearSignalInfo();
+        return this;
+      }
+
+      /**
+       * <code>string abort_message = 14;</code>
+       * @return The abortMessage.
+       */
+      @java.lang.Override
+      public java.lang.String getAbortMessage() {
+        return instance.getAbortMessage();
+      }
+      /**
+       * <code>string abort_message = 14;</code>
+       * @return The bytes for abortMessage.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getAbortMessageBytes() {
+        return instance.getAbortMessageBytes();
+      }
+      /**
+       * <code>string abort_message = 14;</code>
+       * @param value The abortMessage to set.
+       * @return This builder for chaining.
+       */
+      public Builder setAbortMessage(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setAbortMessage(value);
+        return this;
+      }
+      /**
+       * <code>string abort_message = 14;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearAbortMessage() {
+        copyOnWrite();
+        instance.clearAbortMessage();
+        return this;
+      }
+      /**
+       * <code>string abort_message = 14;</code>
+       * @param value The bytes for abortMessage to set.
+       * @return This builder for chaining.
+       */
+      public Builder setAbortMessageBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setAbortMessageBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>repeated .CrashDetail crash_details = 21;</code>
+       */
+      @java.lang.Override
+      public java.util.List<com.android.server.os.LinphoneTombstoneProtos.CrashDetail> getCrashDetailsList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getCrashDetailsList());
+      }
+      /**
+       * <code>repeated .CrashDetail crash_details = 21;</code>
+       */
+      @java.lang.Override
+      public int getCrashDetailsCount() {
+        return instance.getCrashDetailsCount();
+      }/**
+       * <code>repeated .CrashDetail crash_details = 21;</code>
+       */
+      @java.lang.Override
+      public com.android.server.os.LinphoneTombstoneProtos.CrashDetail getCrashDetails(int index) {
+        return instance.getCrashDetails(index);
+      }
+      /**
+       * <code>repeated .CrashDetail crash_details = 21;</code>
+       */
+      public Builder setCrashDetails(
+          int index, com.android.server.os.LinphoneTombstoneProtos.CrashDetail value) {
+        copyOnWrite();
+        instance.setCrashDetails(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .CrashDetail crash_details = 21;</code>
+       */
+      public Builder setCrashDetails(
+          int index, com.android.server.os.LinphoneTombstoneProtos.CrashDetail.Builder builderForValue) {
+        copyOnWrite();
+        instance.setCrashDetails(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .CrashDetail crash_details = 21;</code>
+       */
+      public Builder addCrashDetails(com.android.server.os.LinphoneTombstoneProtos.CrashDetail value) {
+        copyOnWrite();
+        instance.addCrashDetails(value);
+        return this;
+      }
+      /**
+       * <code>repeated .CrashDetail crash_details = 21;</code>
+       */
+      public Builder addCrashDetails(
+          int index, com.android.server.os.LinphoneTombstoneProtos.CrashDetail value) {
+        copyOnWrite();
+        instance.addCrashDetails(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .CrashDetail crash_details = 21;</code>
+       */
+      public Builder addCrashDetails(
+          com.android.server.os.LinphoneTombstoneProtos.CrashDetail.Builder builderForValue) {
+        copyOnWrite();
+        instance.addCrashDetails(builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .CrashDetail crash_details = 21;</code>
+       */
+      public Builder addCrashDetails(
+          int index, com.android.server.os.LinphoneTombstoneProtos.CrashDetail.Builder builderForValue) {
+        copyOnWrite();
+        instance.addCrashDetails(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .CrashDetail crash_details = 21;</code>
+       */
+      public Builder addAllCrashDetails(
+          java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.CrashDetail> values) {
+        copyOnWrite();
+        instance.addAllCrashDetails(values);
+        return this;
+      }
+      /**
+       * <code>repeated .CrashDetail crash_details = 21;</code>
+       */
+      public Builder clearCrashDetails() {
+        copyOnWrite();
+        instance.clearCrashDetails();
+        return this;
+      }
+      /**
+       * <code>repeated .CrashDetail crash_details = 21;</code>
+       */
+      public Builder removeCrashDetails(int index) {
+        copyOnWrite();
+        instance.removeCrashDetails(index);
+        return this;
+      }
+
+      /**
+       * <code>repeated .Cause causes = 15;</code>
+       */
+      @java.lang.Override
+      public java.util.List<com.android.server.os.LinphoneTombstoneProtos.Cause> getCausesList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getCausesList());
+      }
+      /**
+       * <code>repeated .Cause causes = 15;</code>
+       */
+      @java.lang.Override
+      public int getCausesCount() {
+        return instance.getCausesCount();
+      }/**
+       * <code>repeated .Cause causes = 15;</code>
+       */
+      @java.lang.Override
+      public com.android.server.os.LinphoneTombstoneProtos.Cause getCauses(int index) {
+        return instance.getCauses(index);
+      }
+      /**
+       * <code>repeated .Cause causes = 15;</code>
+       */
+      public Builder setCauses(
+          int index, com.android.server.os.LinphoneTombstoneProtos.Cause value) {
+        copyOnWrite();
+        instance.setCauses(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .Cause causes = 15;</code>
+       */
+      public Builder setCauses(
+          int index, com.android.server.os.LinphoneTombstoneProtos.Cause.Builder builderForValue) {
+        copyOnWrite();
+        instance.setCauses(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .Cause causes = 15;</code>
+       */
+      public Builder addCauses(com.android.server.os.LinphoneTombstoneProtos.Cause value) {
+        copyOnWrite();
+        instance.addCauses(value);
+        return this;
+      }
+      /**
+       * <code>repeated .Cause causes = 15;</code>
+       */
+      public Builder addCauses(
+          int index, com.android.server.os.LinphoneTombstoneProtos.Cause value) {
+        copyOnWrite();
+        instance.addCauses(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .Cause causes = 15;</code>
+       */
+      public Builder addCauses(
+          com.android.server.os.LinphoneTombstoneProtos.Cause.Builder builderForValue) {
+        copyOnWrite();
+        instance.addCauses(builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .Cause causes = 15;</code>
+       */
+      public Builder addCauses(
+          int index, com.android.server.os.LinphoneTombstoneProtos.Cause.Builder builderForValue) {
+        copyOnWrite();
+        instance.addCauses(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .Cause causes = 15;</code>
+       */
+      public Builder addAllCauses(
+          java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.Cause> values) {
+        copyOnWrite();
+        instance.addAllCauses(values);
+        return this;
+      }
+      /**
+       * <code>repeated .Cause causes = 15;</code>
+       */
+      public Builder clearCauses() {
+        copyOnWrite();
+        instance.clearCauses();
+        return this;
+      }
+      /**
+       * <code>repeated .Cause causes = 15;</code>
+       */
+      public Builder removeCauses(int index) {
+        copyOnWrite();
+        instance.removeCauses(index);
+        return this;
+      }
+
+      @java.lang.Override
+
+      public int getThreadsCount() {
+        return instance.getThreadsMap().size();
+      }
+      /**
+       * <code>map&lt;uint32, .Thread&gt; threads = 16;</code>
+       */
+      @java.lang.Override
+
+      public boolean containsThreads(
+          int key) {
+        
+        return instance.getThreadsMap().containsKey(key);
+      }
+
+      public Builder clearThreads() {
+        copyOnWrite();
+        instance.getMutableThreadsMap().clear();
+        return this;
+      }
+      /**
+       * <code>map&lt;uint32, .Thread&gt; threads = 16;</code>
+       */
+
+      public Builder removeThreads(
+          int key) {
+        
+        copyOnWrite();
+        instance.getMutableThreadsMap().remove(key);
+        return this;
+      }
+      /**
+       * Use {@link #getThreadsMap()} instead.
+       */
+      @java.lang.Override
+      @java.lang.Deprecated
+      public java.util.Map<java.lang.Integer, com.android.server.os.LinphoneTombstoneProtos.Thread> getThreads() {
+        return getThreadsMap();
+      }
+      /**
+       * <code>map&lt;uint32, .Thread&gt; threads = 16;</code>
+       */
+      @java.lang.Override
+      public java.util.Map<java.lang.Integer, com.android.server.os.LinphoneTombstoneProtos.Thread> getThreadsMap() {
+        return java.util.Collections.unmodifiableMap(
+            instance.getThreadsMap());
+      }
+      /**
+       * <code>map&lt;uint32, .Thread&gt; threads = 16;</code>
+       */
+      @java.lang.Override
+
+      public com.android.server.os.LinphoneTombstoneProtos.Thread getThreadsOrDefault(
+          int key,
+          com.android.server.os.LinphoneTombstoneProtos.Thread defaultValue) {
+        
+        java.util.Map<java.lang.Integer, com.android.server.os.LinphoneTombstoneProtos.Thread> map =
+            instance.getThreadsMap();
+        return map.containsKey(key) ? map.get(key) : defaultValue;
+      }
+      /**
+       * <code>map&lt;uint32, .Thread&gt; threads = 16;</code>
+       */
+      @java.lang.Override
+
+      public com.android.server.os.LinphoneTombstoneProtos.Thread getThreadsOrThrow(
+          int key) {
+        
+        java.util.Map<java.lang.Integer, com.android.server.os.LinphoneTombstoneProtos.Thread> map =
+            instance.getThreadsMap();
+        if (!map.containsKey(key)) {
+          throw new java.lang.IllegalArgumentException();
+        }
+        return map.get(key);
+      }
+      /**
+       * <code>map&lt;uint32, .Thread&gt; threads = 16;</code>
+       */
+      public Builder putThreads(
+          int key,
+          com.android.server.os.LinphoneTombstoneProtos.Thread value) {
+        
+        java.lang.Class<?> valueClass = value.getClass();
+        copyOnWrite();
+        instance.getMutableThreadsMap().put(key, value);
+        return this;
+      }
+      /**
+       * <code>map&lt;uint32, .Thread&gt; threads = 16;</code>
+       */
+      public Builder putAllThreads(
+          java.util.Map<java.lang.Integer, com.android.server.os.LinphoneTombstoneProtos.Thread> values) {
+        copyOnWrite();
+        instance.getMutableThreadsMap().putAll(values);
+        return this;
+      }
+
+      /**
+       * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+       */
+      @java.lang.Override
+      public java.util.List<com.android.server.os.LinphoneTombstoneProtos.MemoryMapping> getMemoryMappingsList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getMemoryMappingsList());
+      }
+      /**
+       * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+       */
+      @java.lang.Override
+      public int getMemoryMappingsCount() {
+        return instance.getMemoryMappingsCount();
+      }/**
+       * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+       */
+      @java.lang.Override
+      public com.android.server.os.LinphoneTombstoneProtos.MemoryMapping getMemoryMappings(int index) {
+        return instance.getMemoryMappings(index);
+      }
+      /**
+       * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+       */
+      public Builder setMemoryMappings(
+          int index, com.android.server.os.LinphoneTombstoneProtos.MemoryMapping value) {
+        copyOnWrite();
+        instance.setMemoryMappings(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+       */
+      public Builder setMemoryMappings(
+          int index, com.android.server.os.LinphoneTombstoneProtos.MemoryMapping.Builder builderForValue) {
+        copyOnWrite();
+        instance.setMemoryMappings(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+       */
+      public Builder addMemoryMappings(com.android.server.os.LinphoneTombstoneProtos.MemoryMapping value) {
+        copyOnWrite();
+        instance.addMemoryMappings(value);
+        return this;
+      }
+      /**
+       * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+       */
+      public Builder addMemoryMappings(
+          int index, com.android.server.os.LinphoneTombstoneProtos.MemoryMapping value) {
+        copyOnWrite();
+        instance.addMemoryMappings(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+       */
+      public Builder addMemoryMappings(
+          com.android.server.os.LinphoneTombstoneProtos.MemoryMapping.Builder builderForValue) {
+        copyOnWrite();
+        instance.addMemoryMappings(builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+       */
+      public Builder addMemoryMappings(
+          int index, com.android.server.os.LinphoneTombstoneProtos.MemoryMapping.Builder builderForValue) {
+        copyOnWrite();
+        instance.addMemoryMappings(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+       */
+      public Builder addAllMemoryMappings(
+          java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.MemoryMapping> values) {
+        copyOnWrite();
+        instance.addAllMemoryMappings(values);
+        return this;
+      }
+      /**
+       * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+       */
+      public Builder clearMemoryMappings() {
+        copyOnWrite();
+        instance.clearMemoryMappings();
+        return this;
+      }
+      /**
+       * <code>repeated .MemoryMapping memory_mappings = 17;</code>
+       */
+      public Builder removeMemoryMappings(int index) {
+        copyOnWrite();
+        instance.removeMemoryMappings(index);
+        return this;
+      }
+
+      /**
+       * <code>repeated .LogBuffer log_buffers = 18;</code>
+       */
+      @java.lang.Override
+      public java.util.List<com.android.server.os.LinphoneTombstoneProtos.LogBuffer> getLogBuffersList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getLogBuffersList());
+      }
+      /**
+       * <code>repeated .LogBuffer log_buffers = 18;</code>
+       */
+      @java.lang.Override
+      public int getLogBuffersCount() {
+        return instance.getLogBuffersCount();
+      }/**
+       * <code>repeated .LogBuffer log_buffers = 18;</code>
+       */
+      @java.lang.Override
+      public com.android.server.os.LinphoneTombstoneProtos.LogBuffer getLogBuffers(int index) {
+        return instance.getLogBuffers(index);
+      }
+      /**
+       * <code>repeated .LogBuffer log_buffers = 18;</code>
+       */
+      public Builder setLogBuffers(
+          int index, com.android.server.os.LinphoneTombstoneProtos.LogBuffer value) {
+        copyOnWrite();
+        instance.setLogBuffers(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .LogBuffer log_buffers = 18;</code>
+       */
+      public Builder setLogBuffers(
+          int index, com.android.server.os.LinphoneTombstoneProtos.LogBuffer.Builder builderForValue) {
+        copyOnWrite();
+        instance.setLogBuffers(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .LogBuffer log_buffers = 18;</code>
+       */
+      public Builder addLogBuffers(com.android.server.os.LinphoneTombstoneProtos.LogBuffer value) {
+        copyOnWrite();
+        instance.addLogBuffers(value);
+        return this;
+      }
+      /**
+       * <code>repeated .LogBuffer log_buffers = 18;</code>
+       */
+      public Builder addLogBuffers(
+          int index, com.android.server.os.LinphoneTombstoneProtos.LogBuffer value) {
+        copyOnWrite();
+        instance.addLogBuffers(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .LogBuffer log_buffers = 18;</code>
+       */
+      public Builder addLogBuffers(
+          com.android.server.os.LinphoneTombstoneProtos.LogBuffer.Builder builderForValue) {
+        copyOnWrite();
+        instance.addLogBuffers(builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .LogBuffer log_buffers = 18;</code>
+       */
+      public Builder addLogBuffers(
+          int index, com.android.server.os.LinphoneTombstoneProtos.LogBuffer.Builder builderForValue) {
+        copyOnWrite();
+        instance.addLogBuffers(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .LogBuffer log_buffers = 18;</code>
+       */
+      public Builder addAllLogBuffers(
+          java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.LogBuffer> values) {
+        copyOnWrite();
+        instance.addAllLogBuffers(values);
+        return this;
+      }
+      /**
+       * <code>repeated .LogBuffer log_buffers = 18;</code>
+       */
+      public Builder clearLogBuffers() {
+        copyOnWrite();
+        instance.clearLogBuffers();
+        return this;
+      }
+      /**
+       * <code>repeated .LogBuffer log_buffers = 18;</code>
+       */
+      public Builder removeLogBuffers(int index) {
+        copyOnWrite();
+        instance.removeLogBuffers(index);
+        return this;
+      }
+
+      /**
+       * <code>repeated .FD open_fds = 19;</code>
+       */
+      @java.lang.Override
+      public java.util.List<com.android.server.os.LinphoneTombstoneProtos.FD> getOpenFdsList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getOpenFdsList());
+      }
+      /**
+       * <code>repeated .FD open_fds = 19;</code>
+       */
+      @java.lang.Override
+      public int getOpenFdsCount() {
+        return instance.getOpenFdsCount();
+      }/**
+       * <code>repeated .FD open_fds = 19;</code>
+       */
+      @java.lang.Override
+      public com.android.server.os.LinphoneTombstoneProtos.FD getOpenFds(int index) {
+        return instance.getOpenFds(index);
+      }
+      /**
+       * <code>repeated .FD open_fds = 19;</code>
+       */
+      public Builder setOpenFds(
+          int index, com.android.server.os.LinphoneTombstoneProtos.FD value) {
+        copyOnWrite();
+        instance.setOpenFds(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .FD open_fds = 19;</code>
+       */
+      public Builder setOpenFds(
+          int index, com.android.server.os.LinphoneTombstoneProtos.FD.Builder builderForValue) {
+        copyOnWrite();
+        instance.setOpenFds(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .FD open_fds = 19;</code>
+       */
+      public Builder addOpenFds(com.android.server.os.LinphoneTombstoneProtos.FD value) {
+        copyOnWrite();
+        instance.addOpenFds(value);
+        return this;
+      }
+      /**
+       * <code>repeated .FD open_fds = 19;</code>
+       */
+      public Builder addOpenFds(
+          int index, com.android.server.os.LinphoneTombstoneProtos.FD value) {
+        copyOnWrite();
+        instance.addOpenFds(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .FD open_fds = 19;</code>
+       */
+      public Builder addOpenFds(
+          com.android.server.os.LinphoneTombstoneProtos.FD.Builder builderForValue) {
+        copyOnWrite();
+        instance.addOpenFds(builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .FD open_fds = 19;</code>
+       */
+      public Builder addOpenFds(
+          int index, com.android.server.os.LinphoneTombstoneProtos.FD.Builder builderForValue) {
+        copyOnWrite();
+        instance.addOpenFds(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .FD open_fds = 19;</code>
+       */
+      public Builder addAllOpenFds(
+          java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.FD> values) {
+        copyOnWrite();
+        instance.addAllOpenFds(values);
+        return this;
+      }
+      /**
+       * <code>repeated .FD open_fds = 19;</code>
+       */
+      public Builder clearOpenFds() {
+        copyOnWrite();
+        instance.clearOpenFds();
+        return this;
+      }
+      /**
+       * <code>repeated .FD open_fds = 19;</code>
+       */
+      public Builder removeOpenFds(int index) {
+        copyOnWrite();
+        instance.removeOpenFds(index);
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:Tombstone)
+    }
+    @java.lang.Override
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new com.android.server.os.LinphoneTombstoneProtos.Tombstone();
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case BUILD_MESSAGE_INFO: {
+            java.lang.Object[] objects = new java.lang.Object[] {
+              "arch_",
+              "buildFingerprint_",
+              "revision_",
+              "timestamp_",
+              "pid_",
+              "tid_",
+              "uid_",
+              "selinuxLabel_",
+              "commandLine_",
+              "signalInfo_",
+              "abortMessage_",
+              "causes_",
+              com.android.server.os.LinphoneTombstoneProtos.Cause.class,
+              "threads_",
+              ThreadsDefaultEntryHolder.defaultEntry,
+              "memoryMappings_",
+              com.android.server.os.LinphoneTombstoneProtos.MemoryMapping.class,
+              "logBuffers_",
+              com.android.server.os.LinphoneTombstoneProtos.LogBuffer.class,
+              "openFds_",
+              com.android.server.os.LinphoneTombstoneProtos.FD.class,
+              "processUptime_",
+              "crashDetails_",
+              com.android.server.os.LinphoneTombstoneProtos.CrashDetail.class,
+            };
+            java.lang.String info =
+                "\u0000\u0012\u0000\u0000\u0001\u0015\u0012\u0001\u0006\u0000\u0001\f\u0002\u0208" +
+                "\u0003\u0208\u0004\u0208\u0005\u000b\u0006\u000b\u0007\u000b\b\u0208\t\u021a\n\t" +
+                "\u000e\u0208\u000f\u001b\u00102\u0011\u001b\u0012\u001b\u0013\u001b\u0014\u000b\u0015" +
+                "\u001b";
+            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          com.google.protobuf.Parser<com.android.server.os.LinphoneTombstoneProtos.Tombstone> parser = PARSER;
+          if (parser == null) {
+            synchronized (com.android.server.os.LinphoneTombstoneProtos.Tombstone.class) {
+              parser = PARSER;
+              if (parser == null) {
+                parser =
+                    new DefaultInstanceBasedParser<com.android.server.os.LinphoneTombstoneProtos.Tombstone>(
+                        DEFAULT_INSTANCE);
+                PARSER = parser;
+              }
+            }
+          }
+          return parser;
+      }
+      case GET_MEMOIZED_IS_INITIALIZED: {
+        return (byte) 1;
+      }
+      case SET_MEMOIZED_IS_INITIALIZED: {
+        return null;
+      }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:Tombstone)
+    private static final com.android.server.os.LinphoneTombstoneProtos.Tombstone DEFAULT_INSTANCE;
+    static {
+      Tombstone defaultInstance = new Tombstone();
+      // New instances are implicitly immutable so no need to make
+      // immutable.
+      DEFAULT_INSTANCE = defaultInstance;
+      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
+        Tombstone.class, defaultInstance);
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.Tombstone getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<Tombstone> PARSER;
+
+    public static com.google.protobuf.Parser<Tombstone> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
+  }
+
+  public interface SignalOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:Signal)
+      com.google.protobuf.MessageLiteOrBuilder {
+
+    /**
+     * <code>int32 number = 1;</code>
+     * @return The number.
+     */
+    int getNumber();
+
+    /**
+     * <code>string name = 2;</code>
+     * @return The name.
+     */
+    java.lang.String getName();
+    /**
+     * <code>string name = 2;</code>
+     * @return The bytes for name.
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    /**
+     * <code>int32 code = 3;</code>
+     * @return The code.
+     */
+    int getCode();
+
+    /**
+     * <code>string code_name = 4;</code>
+     * @return The codeName.
+     */
+    java.lang.String getCodeName();
+    /**
+     * <code>string code_name = 4;</code>
+     * @return The bytes for codeName.
+     */
+    com.google.protobuf.ByteString
+        getCodeNameBytes();
+
+    /**
+     * <code>bool has_sender = 5;</code>
+     * @return The hasSender.
+     */
+    boolean getHasSender();
+
+    /**
+     * <code>int32 sender_uid = 6;</code>
+     * @return The senderUid.
+     */
+    int getSenderUid();
+
+    /**
+     * <code>int32 sender_pid = 7;</code>
+     * @return The senderPid.
+     */
+    int getSenderPid();
+
+    /**
+     * <code>bool has_fault_address = 8;</code>
+     * @return The hasFaultAddress.
+     */
+    boolean getHasFaultAddress();
+
+    /**
+     * <code>uint64 fault_address = 9;</code>
+     * @return The faultAddress.
+     */
+    long getFaultAddress();
+
+    /**
+     * <pre>
+     * Note, may or may not contain the dump of the actual memory contents. Currently, on arm64, we
+     * only include metadata, and not the contents.
+     * </pre>
+     *
+     * <code>.MemoryDump fault_adjacent_metadata = 10;</code>
+     * @return Whether the faultAdjacentMetadata field is set.
+     */
+    boolean hasFaultAdjacentMetadata();
+    /**
+     * <pre>
+     * Note, may or may not contain the dump of the actual memory contents. Currently, on arm64, we
+     * only include metadata, and not the contents.
+     * </pre>
+     *
+     * <code>.MemoryDump fault_adjacent_metadata = 10;</code>
+     * @return The faultAdjacentMetadata.
+     */
+    com.android.server.os.LinphoneTombstoneProtos.MemoryDump getFaultAdjacentMetadata();
+  }
+  /**
+   * Protobuf type {@code Signal}
+   */
+  public  static final class Signal extends
+      com.google.protobuf.GeneratedMessageLite<
+          Signal, Signal.Builder> implements
+      // @@protoc_insertion_point(message_implements:Signal)
+      SignalOrBuilder {
+    private Signal() {
+      name_ = "";
+      codeName_ = "";
+    }
+    public static final int NUMBER_FIELD_NUMBER = 1;
+    private int number_;
+    /**
+     * <code>int32 number = 1;</code>
+     * @return The number.
+     */
+    @java.lang.Override
+    public int getNumber() {
+      return number_;
+    }
+    /**
+     * <code>int32 number = 1;</code>
+     * @param value The number to set.
+     */
+    private void setNumber(int value) {
+      
+      number_ = value;
+    }
+    /**
+     * <code>int32 number = 1;</code>
+     */
+    private void clearNumber() {
+      
+      number_ = 0;
+    }
+
+    public static final int NAME_FIELD_NUMBER = 2;
+    private java.lang.String name_;
+    /**
+     * <code>string name = 2;</code>
+     * @return The name.
+     */
+    @java.lang.Override
+    public java.lang.String getName() {
+      return name_;
+    }
+    /**
+     * <code>string name = 2;</code>
+     * @return The bytes for name.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(name_);
+    }
+    /**
+     * <code>string name = 2;</code>
+     * @param value The name to set.
+     */
+    private void setName(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      name_ = value;
+    }
+    /**
+     * <code>string name = 2;</code>
+     */
+    private void clearName() {
+      
+      name_ = getDefaultInstance().getName();
+    }
+    /**
+     * <code>string name = 2;</code>
+     * @param value The bytes for name to set.
+     */
+    private void setNameBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      name_ = value.toStringUtf8();
+      
+    }
+
+    public static final int CODE_FIELD_NUMBER = 3;
+    private int code_;
+    /**
+     * <code>int32 code = 3;</code>
+     * @return The code.
+     */
+    @java.lang.Override
+    public int getCode() {
+      return code_;
+    }
+    /**
+     * <code>int32 code = 3;</code>
+     * @param value The code to set.
+     */
+    private void setCode(int value) {
+      
+      code_ = value;
+    }
+    /**
+     * <code>int32 code = 3;</code>
+     */
+    private void clearCode() {
+      
+      code_ = 0;
+    }
+
+    public static final int CODE_NAME_FIELD_NUMBER = 4;
+    private java.lang.String codeName_;
+    /**
+     * <code>string code_name = 4;</code>
+     * @return The codeName.
+     */
+    @java.lang.Override
+    public java.lang.String getCodeName() {
+      return codeName_;
+    }
+    /**
+     * <code>string code_name = 4;</code>
+     * @return The bytes for codeName.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getCodeNameBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(codeName_);
+    }
+    /**
+     * <code>string code_name = 4;</code>
+     * @param value The codeName to set.
+     */
+    private void setCodeName(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      codeName_ = value;
+    }
+    /**
+     * <code>string code_name = 4;</code>
+     */
+    private void clearCodeName() {
+      
+      codeName_ = getDefaultInstance().getCodeName();
+    }
+    /**
+     * <code>string code_name = 4;</code>
+     * @param value The bytes for codeName to set.
+     */
+    private void setCodeNameBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      codeName_ = value.toStringUtf8();
+      
+    }
+
+    public static final int HAS_SENDER_FIELD_NUMBER = 5;
+    private boolean hasSender_;
+    /**
+     * <code>bool has_sender = 5;</code>
+     * @return The hasSender.
+     */
+    @java.lang.Override
+    public boolean getHasSender() {
+      return hasSender_;
+    }
+    /**
+     * <code>bool has_sender = 5;</code>
+     * @param value The hasSender to set.
+     */
+    private void setHasSender(boolean value) {
+      
+      hasSender_ = value;
+    }
+    /**
+     * <code>bool has_sender = 5;</code>
+     */
+    private void clearHasSender() {
+      
+      hasSender_ = false;
+    }
+
+    public static final int SENDER_UID_FIELD_NUMBER = 6;
+    private int senderUid_;
+    /**
+     * <code>int32 sender_uid = 6;</code>
+     * @return The senderUid.
+     */
+    @java.lang.Override
+    public int getSenderUid() {
+      return senderUid_;
+    }
+    /**
+     * <code>int32 sender_uid = 6;</code>
+     * @param value The senderUid to set.
+     */
+    private void setSenderUid(int value) {
+      
+      senderUid_ = value;
+    }
+    /**
+     * <code>int32 sender_uid = 6;</code>
+     */
+    private void clearSenderUid() {
+      
+      senderUid_ = 0;
+    }
+
+    public static final int SENDER_PID_FIELD_NUMBER = 7;
+    private int senderPid_;
+    /**
+     * <code>int32 sender_pid = 7;</code>
+     * @return The senderPid.
+     */
+    @java.lang.Override
+    public int getSenderPid() {
+      return senderPid_;
+    }
+    /**
+     * <code>int32 sender_pid = 7;</code>
+     * @param value The senderPid to set.
+     */
+    private void setSenderPid(int value) {
+      
+      senderPid_ = value;
+    }
+    /**
+     * <code>int32 sender_pid = 7;</code>
+     */
+    private void clearSenderPid() {
+      
+      senderPid_ = 0;
+    }
+
+    public static final int HAS_FAULT_ADDRESS_FIELD_NUMBER = 8;
+    private boolean hasFaultAddress_;
+    /**
+     * <code>bool has_fault_address = 8;</code>
+     * @return The hasFaultAddress.
+     */
+    @java.lang.Override
+    public boolean getHasFaultAddress() {
+      return hasFaultAddress_;
+    }
+    /**
+     * <code>bool has_fault_address = 8;</code>
+     * @param value The hasFaultAddress to set.
+     */
+    private void setHasFaultAddress(boolean value) {
+      
+      hasFaultAddress_ = value;
+    }
+    /**
+     * <code>bool has_fault_address = 8;</code>
+     */
+    private void clearHasFaultAddress() {
+      
+      hasFaultAddress_ = false;
+    }
+
+    public static final int FAULT_ADDRESS_FIELD_NUMBER = 9;
+    private long faultAddress_;
+    /**
+     * <code>uint64 fault_address = 9;</code>
+     * @return The faultAddress.
+     */
+    @java.lang.Override
+    public long getFaultAddress() {
+      return faultAddress_;
+    }
+    /**
+     * <code>uint64 fault_address = 9;</code>
+     * @param value The faultAddress to set.
+     */
+    private void setFaultAddress(long value) {
+      
+      faultAddress_ = value;
+    }
+    /**
+     * <code>uint64 fault_address = 9;</code>
+     */
+    private void clearFaultAddress() {
+      
+      faultAddress_ = 0L;
+    }
+
+    public static final int FAULT_ADJACENT_METADATA_FIELD_NUMBER = 10;
+    private com.android.server.os.LinphoneTombstoneProtos.MemoryDump faultAdjacentMetadata_;
+    /**
+     * <pre>
+     * Note, may or may not contain the dump of the actual memory contents. Currently, on arm64, we
+     * only include metadata, and not the contents.
+     * </pre>
+     *
+     * <code>.MemoryDump fault_adjacent_metadata = 10;</code>
+     */
+    @java.lang.Override
+    public boolean hasFaultAdjacentMetadata() {
+      return faultAdjacentMetadata_ != null;
+    }
+    /**
+     * <pre>
+     * Note, may or may not contain the dump of the actual memory contents. Currently, on arm64, we
+     * only include metadata, and not the contents.
+     * </pre>
+     *
+     * <code>.MemoryDump fault_adjacent_metadata = 10;</code>
+     */
+    @java.lang.Override
+    public com.android.server.os.LinphoneTombstoneProtos.MemoryDump getFaultAdjacentMetadata() {
+      return faultAdjacentMetadata_ == null ? com.android.server.os.LinphoneTombstoneProtos.MemoryDump.getDefaultInstance() : faultAdjacentMetadata_;
+    }
+    /**
+     * <pre>
+     * Note, may or may not contain the dump of the actual memory contents. Currently, on arm64, we
+     * only include metadata, and not the contents.
+     * </pre>
+     *
+     * <code>.MemoryDump fault_adjacent_metadata = 10;</code>
+     */
+    private void setFaultAdjacentMetadata(com.android.server.os.LinphoneTombstoneProtos.MemoryDump value) {
+      value.getClass();
+  faultAdjacentMetadata_ = value;
+      
+      }
+    /**
+     * <pre>
+     * Note, may or may not contain the dump of the actual memory contents. Currently, on arm64, we
+     * only include metadata, and not the contents.
+     * </pre>
+     *
+     * <code>.MemoryDump fault_adjacent_metadata = 10;</code>
+     */
+    @java.lang.SuppressWarnings({"ReferenceEquality"})
+    private void mergeFaultAdjacentMetadata(com.android.server.os.LinphoneTombstoneProtos.MemoryDump value) {
+      value.getClass();
+  if (faultAdjacentMetadata_ != null &&
+          faultAdjacentMetadata_ != com.android.server.os.LinphoneTombstoneProtos.MemoryDump.getDefaultInstance()) {
+        faultAdjacentMetadata_ =
+          com.android.server.os.LinphoneTombstoneProtos.MemoryDump.newBuilder(faultAdjacentMetadata_).mergeFrom(value).buildPartial();
+      } else {
+        faultAdjacentMetadata_ = value;
+      }
+      
+    }
+    /**
+     * <pre>
+     * Note, may or may not contain the dump of the actual memory contents. Currently, on arm64, we
+     * only include metadata, and not the contents.
+     * </pre>
+     *
+     * <code>.MemoryDump fault_adjacent_metadata = 10;</code>
+     */
+    private void clearFaultAdjacentMetadata() {  faultAdjacentMetadata_ = null;
+      
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.Signal parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Signal parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Signal parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Signal parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Signal parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Signal parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Signal parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Signal parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Signal parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Signal parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Signal parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Signal parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return (Builder) DEFAULT_INSTANCE.createBuilder();
+    }
+    public static Builder newBuilder(com.android.server.os.LinphoneTombstoneProtos.Signal prototype) {
+      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
+    }
+
+    /**
+     * Protobuf type {@code Signal}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageLite.Builder<
+          com.android.server.os.LinphoneTombstoneProtos.Signal, Builder> implements
+        // @@protoc_insertion_point(builder_implements:Signal)
+        com.android.server.os.LinphoneTombstoneProtos.SignalOrBuilder {
+      // Construct using com.android.server.os.LinphoneTombstoneProtos.Signal.newBuilder()
+      private Builder() {
+        super(DEFAULT_INSTANCE);
+      }
+
+
+      /**
+       * <code>int32 number = 1;</code>
+       * @return The number.
+       */
+      @java.lang.Override
+      public int getNumber() {
+        return instance.getNumber();
+      }
+      /**
+       * <code>int32 number = 1;</code>
+       * @param value The number to set.
+       * @return This builder for chaining.
+       */
+      public Builder setNumber(int value) {
+        copyOnWrite();
+        instance.setNumber(value);
+        return this;
+      }
+      /**
+       * <code>int32 number = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearNumber() {
+        copyOnWrite();
+        instance.clearNumber();
+        return this;
+      }
+
+      /**
+       * <code>string name = 2;</code>
+       * @return The name.
+       */
+      @java.lang.Override
+      public java.lang.String getName() {
+        return instance.getName();
+      }
+      /**
+       * <code>string name = 2;</code>
+       * @return The bytes for name.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        return instance.getNameBytes();
+      }
+      /**
+       * <code>string name = 2;</code>
+       * @param value The name to set.
+       * @return This builder for chaining.
+       */
+      public Builder setName(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setName(value);
+        return this;
+      }
+      /**
+       * <code>string name = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearName() {
+        copyOnWrite();
+        instance.clearName();
+        return this;
+      }
+      /**
+       * <code>string name = 2;</code>
+       * @param value The bytes for name to set.
+       * @return This builder for chaining.
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setNameBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>int32 code = 3;</code>
+       * @return The code.
+       */
+      @java.lang.Override
+      public int getCode() {
+        return instance.getCode();
+      }
+      /**
+       * <code>int32 code = 3;</code>
+       * @param value The code to set.
+       * @return This builder for chaining.
+       */
+      public Builder setCode(int value) {
+        copyOnWrite();
+        instance.setCode(value);
+        return this;
+      }
+      /**
+       * <code>int32 code = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearCode() {
+        copyOnWrite();
+        instance.clearCode();
+        return this;
+      }
+
+      /**
+       * <code>string code_name = 4;</code>
+       * @return The codeName.
+       */
+      @java.lang.Override
+      public java.lang.String getCodeName() {
+        return instance.getCodeName();
+      }
+      /**
+       * <code>string code_name = 4;</code>
+       * @return The bytes for codeName.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getCodeNameBytes() {
+        return instance.getCodeNameBytes();
+      }
+      /**
+       * <code>string code_name = 4;</code>
+       * @param value The codeName to set.
+       * @return This builder for chaining.
+       */
+      public Builder setCodeName(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setCodeName(value);
+        return this;
+      }
+      /**
+       * <code>string code_name = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearCodeName() {
+        copyOnWrite();
+        instance.clearCodeName();
+        return this;
+      }
+      /**
+       * <code>string code_name = 4;</code>
+       * @param value The bytes for codeName to set.
+       * @return This builder for chaining.
+       */
+      public Builder setCodeNameBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setCodeNameBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>bool has_sender = 5;</code>
+       * @return The hasSender.
+       */
+      @java.lang.Override
+      public boolean getHasSender() {
+        return instance.getHasSender();
+      }
+      /**
+       * <code>bool has_sender = 5;</code>
+       * @param value The hasSender to set.
+       * @return This builder for chaining.
+       */
+      public Builder setHasSender(boolean value) {
+        copyOnWrite();
+        instance.setHasSender(value);
+        return this;
+      }
+      /**
+       * <code>bool has_sender = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearHasSender() {
+        copyOnWrite();
+        instance.clearHasSender();
+        return this;
+      }
+
+      /**
+       * <code>int32 sender_uid = 6;</code>
+       * @return The senderUid.
+       */
+      @java.lang.Override
+      public int getSenderUid() {
+        return instance.getSenderUid();
+      }
+      /**
+       * <code>int32 sender_uid = 6;</code>
+       * @param value The senderUid to set.
+       * @return This builder for chaining.
+       */
+      public Builder setSenderUid(int value) {
+        copyOnWrite();
+        instance.setSenderUid(value);
+        return this;
+      }
+      /**
+       * <code>int32 sender_uid = 6;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearSenderUid() {
+        copyOnWrite();
+        instance.clearSenderUid();
+        return this;
+      }
+
+      /**
+       * <code>int32 sender_pid = 7;</code>
+       * @return The senderPid.
+       */
+      @java.lang.Override
+      public int getSenderPid() {
+        return instance.getSenderPid();
+      }
+      /**
+       * <code>int32 sender_pid = 7;</code>
+       * @param value The senderPid to set.
+       * @return This builder for chaining.
+       */
+      public Builder setSenderPid(int value) {
+        copyOnWrite();
+        instance.setSenderPid(value);
+        return this;
+      }
+      /**
+       * <code>int32 sender_pid = 7;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearSenderPid() {
+        copyOnWrite();
+        instance.clearSenderPid();
+        return this;
+      }
+
+      /**
+       * <code>bool has_fault_address = 8;</code>
+       * @return The hasFaultAddress.
+       */
+      @java.lang.Override
+      public boolean getHasFaultAddress() {
+        return instance.getHasFaultAddress();
+      }
+      /**
+       * <code>bool has_fault_address = 8;</code>
+       * @param value The hasFaultAddress to set.
+       * @return This builder for chaining.
+       */
+      public Builder setHasFaultAddress(boolean value) {
+        copyOnWrite();
+        instance.setHasFaultAddress(value);
+        return this;
+      }
+      /**
+       * <code>bool has_fault_address = 8;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearHasFaultAddress() {
+        copyOnWrite();
+        instance.clearHasFaultAddress();
+        return this;
+      }
+
+      /**
+       * <code>uint64 fault_address = 9;</code>
+       * @return The faultAddress.
+       */
+      @java.lang.Override
+      public long getFaultAddress() {
+        return instance.getFaultAddress();
+      }
+      /**
+       * <code>uint64 fault_address = 9;</code>
+       * @param value The faultAddress to set.
+       * @return This builder for chaining.
+       */
+      public Builder setFaultAddress(long value) {
+        copyOnWrite();
+        instance.setFaultAddress(value);
+        return this;
+      }
+      /**
+       * <code>uint64 fault_address = 9;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearFaultAddress() {
+        copyOnWrite();
+        instance.clearFaultAddress();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * Note, may or may not contain the dump of the actual memory contents. Currently, on arm64, we
+       * only include metadata, and not the contents.
+       * </pre>
+       *
+       * <code>.MemoryDump fault_adjacent_metadata = 10;</code>
+       */
+      @java.lang.Override
+      public boolean hasFaultAdjacentMetadata() {
+        return instance.hasFaultAdjacentMetadata();
+      }
+      /**
+       * <pre>
+       * Note, may or may not contain the dump of the actual memory contents. Currently, on arm64, we
+       * only include metadata, and not the contents.
+       * </pre>
+       *
+       * <code>.MemoryDump fault_adjacent_metadata = 10;</code>
+       */
+      @java.lang.Override
+      public com.android.server.os.LinphoneTombstoneProtos.MemoryDump getFaultAdjacentMetadata() {
+        return instance.getFaultAdjacentMetadata();
+      }
+      /**
+       * <pre>
+       * Note, may or may not contain the dump of the actual memory contents. Currently, on arm64, we
+       * only include metadata, and not the contents.
+       * </pre>
+       *
+       * <code>.MemoryDump fault_adjacent_metadata = 10;</code>
+       */
+      public Builder setFaultAdjacentMetadata(com.android.server.os.LinphoneTombstoneProtos.MemoryDump value) {
+        copyOnWrite();
+        instance.setFaultAdjacentMetadata(value);
+        return this;
+        }
+      /**
+       * <pre>
+       * Note, may or may not contain the dump of the actual memory contents. Currently, on arm64, we
+       * only include metadata, and not the contents.
+       * </pre>
+       *
+       * <code>.MemoryDump fault_adjacent_metadata = 10;</code>
+       */
+      public Builder setFaultAdjacentMetadata(
+          com.android.server.os.LinphoneTombstoneProtos.MemoryDump.Builder builderForValue) {
+        copyOnWrite();
+        instance.setFaultAdjacentMetadata(builderForValue.build());
+        return this;
+      }
+      /**
+       * <pre>
+       * Note, may or may not contain the dump of the actual memory contents. Currently, on arm64, we
+       * only include metadata, and not the contents.
+       * </pre>
+       *
+       * <code>.MemoryDump fault_adjacent_metadata = 10;</code>
+       */
+      public Builder mergeFaultAdjacentMetadata(com.android.server.os.LinphoneTombstoneProtos.MemoryDump value) {
+        copyOnWrite();
+        instance.mergeFaultAdjacentMetadata(value);
+        return this;
+      }
+      /**
+       * <pre>
+       * Note, may or may not contain the dump of the actual memory contents. Currently, on arm64, we
+       * only include metadata, and not the contents.
+       * </pre>
+       *
+       * <code>.MemoryDump fault_adjacent_metadata = 10;</code>
+       */
+      public Builder clearFaultAdjacentMetadata() {  copyOnWrite();
+        instance.clearFaultAdjacentMetadata();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:Signal)
+    }
+    @java.lang.Override
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new com.android.server.os.LinphoneTombstoneProtos.Signal();
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case BUILD_MESSAGE_INFO: {
+            java.lang.Object[] objects = new java.lang.Object[] {
+              "number_",
+              "name_",
+              "code_",
+              "codeName_",
+              "hasSender_",
+              "senderUid_",
+              "senderPid_",
+              "hasFaultAddress_",
+              "faultAddress_",
+              "faultAdjacentMetadata_",
+            };
+            java.lang.String info =
+                "\u0000\n\u0000\u0000\u0001\n\n\u0000\u0000\u0000\u0001\u0004\u0002\u0208\u0003\u0004" +
+                "\u0004\u0208\u0005\u0007\u0006\u0004\u0007\u0004\b\u0007\t\u0003\n\t";
+            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          com.google.protobuf.Parser<com.android.server.os.LinphoneTombstoneProtos.Signal> parser = PARSER;
+          if (parser == null) {
+            synchronized (com.android.server.os.LinphoneTombstoneProtos.Signal.class) {
+              parser = PARSER;
+              if (parser == null) {
+                parser =
+                    new DefaultInstanceBasedParser<com.android.server.os.LinphoneTombstoneProtos.Signal>(
+                        DEFAULT_INSTANCE);
+                PARSER = parser;
+              }
+            }
+          }
+          return parser;
+      }
+      case GET_MEMOIZED_IS_INITIALIZED: {
+        return (byte) 1;
+      }
+      case SET_MEMOIZED_IS_INITIALIZED: {
+        return null;
+      }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:Signal)
+    private static final com.android.server.os.LinphoneTombstoneProtos.Signal DEFAULT_INSTANCE;
+    static {
+      Signal defaultInstance = new Signal();
+      // New instances are implicitly immutable so no need to make
+      // immutable.
+      DEFAULT_INSTANCE = defaultInstance;
+      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
+        Signal.class, defaultInstance);
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.Signal getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<Signal> PARSER;
+
+    public static com.google.protobuf.Parser<Signal> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
+  }
+
+  public interface HeapObjectOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:HeapObject)
+      com.google.protobuf.MessageLiteOrBuilder {
+
+    /**
+     * <code>uint64 address = 1;</code>
+     * @return The address.
+     */
+    long getAddress();
+
+    /**
+     * <code>uint64 size = 2;</code>
+     * @return The size.
+     */
+    long getSize();
+
+    /**
+     * <code>uint64 allocation_tid = 3;</code>
+     * @return The allocationTid.
+     */
+    long getAllocationTid();
+
+    /**
+     * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+     */
+    java.util.List<com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> 
+        getAllocationBacktraceList();
+    /**
+     * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+     */
+    com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame getAllocationBacktrace(int index);
+    /**
+     * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+     */
+    int getAllocationBacktraceCount();
+
+    /**
+     * <code>uint64 deallocation_tid = 5;</code>
+     * @return The deallocationTid.
+     */
+    long getDeallocationTid();
+
+    /**
+     * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+     */
+    java.util.List<com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> 
+        getDeallocationBacktraceList();
+    /**
+     * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+     */
+    com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame getDeallocationBacktrace(int index);
+    /**
+     * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+     */
+    int getDeallocationBacktraceCount();
+  }
+  /**
+   * Protobuf type {@code HeapObject}
+   */
+  public  static final class HeapObject extends
+      com.google.protobuf.GeneratedMessageLite<
+          HeapObject, HeapObject.Builder> implements
+      // @@protoc_insertion_point(message_implements:HeapObject)
+      HeapObjectOrBuilder {
+    private HeapObject() {
+      allocationBacktrace_ = emptyProtobufList();
+      deallocationBacktrace_ = emptyProtobufList();
+    }
+    public static final int ADDRESS_FIELD_NUMBER = 1;
+    private long address_;
+    /**
+     * <code>uint64 address = 1;</code>
+     * @return The address.
+     */
+    @java.lang.Override
+    public long getAddress() {
+      return address_;
+    }
+    /**
+     * <code>uint64 address = 1;</code>
+     * @param value The address to set.
+     */
+    private void setAddress(long value) {
+      
+      address_ = value;
+    }
+    /**
+     * <code>uint64 address = 1;</code>
+     */
+    private void clearAddress() {
+      
+      address_ = 0L;
+    }
+
+    public static final int SIZE_FIELD_NUMBER = 2;
+    private long size_;
+    /**
+     * <code>uint64 size = 2;</code>
+     * @return The size.
+     */
+    @java.lang.Override
+    public long getSize() {
+      return size_;
+    }
+    /**
+     * <code>uint64 size = 2;</code>
+     * @param value The size to set.
+     */
+    private void setSize(long value) {
+      
+      size_ = value;
+    }
+    /**
+     * <code>uint64 size = 2;</code>
+     */
+    private void clearSize() {
+      
+      size_ = 0L;
+    }
+
+    public static final int ALLOCATION_TID_FIELD_NUMBER = 3;
+    private long allocationTid_;
+    /**
+     * <code>uint64 allocation_tid = 3;</code>
+     * @return The allocationTid.
+     */
+    @java.lang.Override
+    public long getAllocationTid() {
+      return allocationTid_;
+    }
+    /**
+     * <code>uint64 allocation_tid = 3;</code>
+     * @param value The allocationTid to set.
+     */
+    private void setAllocationTid(long value) {
+      
+      allocationTid_ = value;
+    }
+    /**
+     * <code>uint64 allocation_tid = 3;</code>
+     */
+    private void clearAllocationTid() {
+      
+      allocationTid_ = 0L;
+    }
+
+    public static final int ALLOCATION_BACKTRACE_FIELD_NUMBER = 4;
+    private com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> allocationBacktrace_;
+    /**
+     * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+     */
+    @java.lang.Override
+    public java.util.List<com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> getAllocationBacktraceList() {
+      return allocationBacktrace_;
+    }
+    /**
+     * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+     */
+    public java.util.List<? extends com.android.server.os.LinphoneTombstoneProtos.BacktraceFrameOrBuilder> 
+        getAllocationBacktraceOrBuilderList() {
+      return allocationBacktrace_;
+    }
+    /**
+     * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+     */
+    @java.lang.Override
+    public int getAllocationBacktraceCount() {
+      return allocationBacktrace_.size();
+    }
+    /**
+     * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+     */
+    @java.lang.Override
+    public com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame getAllocationBacktrace(int index) {
+      return allocationBacktrace_.get(index);
+    }
+    /**
+     * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+     */
+    public com.android.server.os.LinphoneTombstoneProtos.BacktraceFrameOrBuilder getAllocationBacktraceOrBuilder(
+        int index) {
+      return allocationBacktrace_.get(index);
+    }
+    private void ensureAllocationBacktraceIsMutable() {
+      com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> tmp = allocationBacktrace_;
+      if (!tmp.isModifiable()) {
+        allocationBacktrace_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
+       }
+    }
+
+    /**
+     * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+     */
+    private void setAllocationBacktrace(
+        int index, com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame value) {
+      value.getClass();
+  ensureAllocationBacktraceIsMutable();
+      allocationBacktrace_.set(index, value);
+    }
+    /**
+     * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+     */
+    private void addAllocationBacktrace(com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame value) {
+      value.getClass();
+  ensureAllocationBacktraceIsMutable();
+      allocationBacktrace_.add(value);
+    }
+    /**
+     * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+     */
+    private void addAllocationBacktrace(
+        int index, com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame value) {
+      value.getClass();
+  ensureAllocationBacktraceIsMutable();
+      allocationBacktrace_.add(index, value);
+    }
+    /**
+     * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+     */
+    private void addAllAllocationBacktrace(
+        java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> values) {
+      ensureAllocationBacktraceIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, allocationBacktrace_);
+    }
+    /**
+     * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+     */
+    private void clearAllocationBacktrace() {
+      allocationBacktrace_ = emptyProtobufList();
+    }
+    /**
+     * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+     */
+    private void removeAllocationBacktrace(int index) {
+      ensureAllocationBacktraceIsMutable();
+      allocationBacktrace_.remove(index);
+    }
+
+    public static final int DEALLOCATION_TID_FIELD_NUMBER = 5;
+    private long deallocationTid_;
+    /**
+     * <code>uint64 deallocation_tid = 5;</code>
+     * @return The deallocationTid.
+     */
+    @java.lang.Override
+    public long getDeallocationTid() {
+      return deallocationTid_;
+    }
+    /**
+     * <code>uint64 deallocation_tid = 5;</code>
+     * @param value The deallocationTid to set.
+     */
+    private void setDeallocationTid(long value) {
+      
+      deallocationTid_ = value;
+    }
+    /**
+     * <code>uint64 deallocation_tid = 5;</code>
+     */
+    private void clearDeallocationTid() {
+      
+      deallocationTid_ = 0L;
+    }
+
+    public static final int DEALLOCATION_BACKTRACE_FIELD_NUMBER = 6;
+    private com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> deallocationBacktrace_;
+    /**
+     * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+     */
+    @java.lang.Override
+    public java.util.List<com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> getDeallocationBacktraceList() {
+      return deallocationBacktrace_;
+    }
+    /**
+     * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+     */
+    public java.util.List<? extends com.android.server.os.LinphoneTombstoneProtos.BacktraceFrameOrBuilder> 
+        getDeallocationBacktraceOrBuilderList() {
+      return deallocationBacktrace_;
+    }
+    /**
+     * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+     */
+    @java.lang.Override
+    public int getDeallocationBacktraceCount() {
+      return deallocationBacktrace_.size();
+    }
+    /**
+     * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+     */
+    @java.lang.Override
+    public com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame getDeallocationBacktrace(int index) {
+      return deallocationBacktrace_.get(index);
+    }
+    /**
+     * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+     */
+    public com.android.server.os.LinphoneTombstoneProtos.BacktraceFrameOrBuilder getDeallocationBacktraceOrBuilder(
+        int index) {
+      return deallocationBacktrace_.get(index);
+    }
+    private void ensureDeallocationBacktraceIsMutable() {
+      com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> tmp = deallocationBacktrace_;
+      if (!tmp.isModifiable()) {
+        deallocationBacktrace_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
+       }
+    }
+
+    /**
+     * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+     */
+    private void setDeallocationBacktrace(
+        int index, com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame value) {
+      value.getClass();
+  ensureDeallocationBacktraceIsMutable();
+      deallocationBacktrace_.set(index, value);
+    }
+    /**
+     * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+     */
+    private void addDeallocationBacktrace(com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame value) {
+      value.getClass();
+  ensureDeallocationBacktraceIsMutable();
+      deallocationBacktrace_.add(value);
+    }
+    /**
+     * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+     */
+    private void addDeallocationBacktrace(
+        int index, com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame value) {
+      value.getClass();
+  ensureDeallocationBacktraceIsMutable();
+      deallocationBacktrace_.add(index, value);
+    }
+    /**
+     * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+     */
+    private void addAllDeallocationBacktrace(
+        java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> values) {
+      ensureDeallocationBacktraceIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, deallocationBacktrace_);
+    }
+    /**
+     * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+     */
+    private void clearDeallocationBacktrace() {
+      deallocationBacktrace_ = emptyProtobufList();
+    }
+    /**
+     * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+     */
+    private void removeDeallocationBacktrace(int index) {
+      ensureDeallocationBacktraceIsMutable();
+      deallocationBacktrace_.remove(index);
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.HeapObject parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.HeapObject parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.HeapObject parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.HeapObject parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.HeapObject parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.HeapObject parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.HeapObject parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.HeapObject parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.HeapObject parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.HeapObject parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.HeapObject parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.HeapObject parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return (Builder) DEFAULT_INSTANCE.createBuilder();
+    }
+    public static Builder newBuilder(com.android.server.os.LinphoneTombstoneProtos.HeapObject prototype) {
+      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
+    }
+
+    /**
+     * Protobuf type {@code HeapObject}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageLite.Builder<
+          com.android.server.os.LinphoneTombstoneProtos.HeapObject, Builder> implements
+        // @@protoc_insertion_point(builder_implements:HeapObject)
+        com.android.server.os.LinphoneTombstoneProtos.HeapObjectOrBuilder {
+      // Construct using com.android.server.os.LinphoneTombstoneProtos.HeapObject.newBuilder()
+      private Builder() {
+        super(DEFAULT_INSTANCE);
+      }
+
+
+      /**
+       * <code>uint64 address = 1;</code>
+       * @return The address.
+       */
+      @java.lang.Override
+      public long getAddress() {
+        return instance.getAddress();
+      }
+      /**
+       * <code>uint64 address = 1;</code>
+       * @param value The address to set.
+       * @return This builder for chaining.
+       */
+      public Builder setAddress(long value) {
+        copyOnWrite();
+        instance.setAddress(value);
+        return this;
+      }
+      /**
+       * <code>uint64 address = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearAddress() {
+        copyOnWrite();
+        instance.clearAddress();
+        return this;
+      }
+
+      /**
+       * <code>uint64 size = 2;</code>
+       * @return The size.
+       */
+      @java.lang.Override
+      public long getSize() {
+        return instance.getSize();
+      }
+      /**
+       * <code>uint64 size = 2;</code>
+       * @param value The size to set.
+       * @return This builder for chaining.
+       */
+      public Builder setSize(long value) {
+        copyOnWrite();
+        instance.setSize(value);
+        return this;
+      }
+      /**
+       * <code>uint64 size = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearSize() {
+        copyOnWrite();
+        instance.clearSize();
+        return this;
+      }
+
+      /**
+       * <code>uint64 allocation_tid = 3;</code>
+       * @return The allocationTid.
+       */
+      @java.lang.Override
+      public long getAllocationTid() {
+        return instance.getAllocationTid();
+      }
+      /**
+       * <code>uint64 allocation_tid = 3;</code>
+       * @param value The allocationTid to set.
+       * @return This builder for chaining.
+       */
+      public Builder setAllocationTid(long value) {
+        copyOnWrite();
+        instance.setAllocationTid(value);
+        return this;
+      }
+      /**
+       * <code>uint64 allocation_tid = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearAllocationTid() {
+        copyOnWrite();
+        instance.clearAllocationTid();
+        return this;
+      }
+
+      /**
+       * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+       */
+      @java.lang.Override
+      public java.util.List<com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> getAllocationBacktraceList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getAllocationBacktraceList());
+      }
+      /**
+       * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+       */
+      @java.lang.Override
+      public int getAllocationBacktraceCount() {
+        return instance.getAllocationBacktraceCount();
+      }/**
+       * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+       */
+      @java.lang.Override
+      public com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame getAllocationBacktrace(int index) {
+        return instance.getAllocationBacktrace(index);
+      }
+      /**
+       * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+       */
+      public Builder setAllocationBacktrace(
+          int index, com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame value) {
+        copyOnWrite();
+        instance.setAllocationBacktrace(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+       */
+      public Builder setAllocationBacktrace(
+          int index, com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame.Builder builderForValue) {
+        copyOnWrite();
+        instance.setAllocationBacktrace(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+       */
+      public Builder addAllocationBacktrace(com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame value) {
+        copyOnWrite();
+        instance.addAllocationBacktrace(value);
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+       */
+      public Builder addAllocationBacktrace(
+          int index, com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame value) {
+        copyOnWrite();
+        instance.addAllocationBacktrace(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+       */
+      public Builder addAllocationBacktrace(
+          com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame.Builder builderForValue) {
+        copyOnWrite();
+        instance.addAllocationBacktrace(builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+       */
+      public Builder addAllocationBacktrace(
+          int index, com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame.Builder builderForValue) {
+        copyOnWrite();
+        instance.addAllocationBacktrace(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+       */
+      public Builder addAllAllocationBacktrace(
+          java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> values) {
+        copyOnWrite();
+        instance.addAllAllocationBacktrace(values);
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+       */
+      public Builder clearAllocationBacktrace() {
+        copyOnWrite();
+        instance.clearAllocationBacktrace();
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame allocation_backtrace = 4;</code>
+       */
+      public Builder removeAllocationBacktrace(int index) {
+        copyOnWrite();
+        instance.removeAllocationBacktrace(index);
+        return this;
+      }
+
+      /**
+       * <code>uint64 deallocation_tid = 5;</code>
+       * @return The deallocationTid.
+       */
+      @java.lang.Override
+      public long getDeallocationTid() {
+        return instance.getDeallocationTid();
+      }
+      /**
+       * <code>uint64 deallocation_tid = 5;</code>
+       * @param value The deallocationTid to set.
+       * @return This builder for chaining.
+       */
+      public Builder setDeallocationTid(long value) {
+        copyOnWrite();
+        instance.setDeallocationTid(value);
+        return this;
+      }
+      /**
+       * <code>uint64 deallocation_tid = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearDeallocationTid() {
+        copyOnWrite();
+        instance.clearDeallocationTid();
+        return this;
+      }
+
+      /**
+       * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+       */
+      @java.lang.Override
+      public java.util.List<com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> getDeallocationBacktraceList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getDeallocationBacktraceList());
+      }
+      /**
+       * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+       */
+      @java.lang.Override
+      public int getDeallocationBacktraceCount() {
+        return instance.getDeallocationBacktraceCount();
+      }/**
+       * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+       */
+      @java.lang.Override
+      public com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame getDeallocationBacktrace(int index) {
+        return instance.getDeallocationBacktrace(index);
+      }
+      /**
+       * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+       */
+      public Builder setDeallocationBacktrace(
+          int index, com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame value) {
+        copyOnWrite();
+        instance.setDeallocationBacktrace(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+       */
+      public Builder setDeallocationBacktrace(
+          int index, com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame.Builder builderForValue) {
+        copyOnWrite();
+        instance.setDeallocationBacktrace(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+       */
+      public Builder addDeallocationBacktrace(com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame value) {
+        copyOnWrite();
+        instance.addDeallocationBacktrace(value);
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+       */
+      public Builder addDeallocationBacktrace(
+          int index, com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame value) {
+        copyOnWrite();
+        instance.addDeallocationBacktrace(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+       */
+      public Builder addDeallocationBacktrace(
+          com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame.Builder builderForValue) {
+        copyOnWrite();
+        instance.addDeallocationBacktrace(builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+       */
+      public Builder addDeallocationBacktrace(
+          int index, com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame.Builder builderForValue) {
+        copyOnWrite();
+        instance.addDeallocationBacktrace(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+       */
+      public Builder addAllDeallocationBacktrace(
+          java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> values) {
+        copyOnWrite();
+        instance.addAllDeallocationBacktrace(values);
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+       */
+      public Builder clearDeallocationBacktrace() {
+        copyOnWrite();
+        instance.clearDeallocationBacktrace();
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame deallocation_backtrace = 6;</code>
+       */
+      public Builder removeDeallocationBacktrace(int index) {
+        copyOnWrite();
+        instance.removeDeallocationBacktrace(index);
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:HeapObject)
+    }
+    @java.lang.Override
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new com.android.server.os.LinphoneTombstoneProtos.HeapObject();
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case BUILD_MESSAGE_INFO: {
+            java.lang.Object[] objects = new java.lang.Object[] {
+              "address_",
+              "size_",
+              "allocationTid_",
+              "allocationBacktrace_",
+              com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame.class,
+              "deallocationTid_",
+              "deallocationBacktrace_",
+              com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame.class,
+            };
+            java.lang.String info =
+                "\u0000\u0006\u0000\u0000\u0001\u0006\u0006\u0000\u0002\u0000\u0001\u0003\u0002\u0003" +
+                "\u0003\u0003\u0004\u001b\u0005\u0003\u0006\u001b";
+            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          com.google.protobuf.Parser<com.android.server.os.LinphoneTombstoneProtos.HeapObject> parser = PARSER;
+          if (parser == null) {
+            synchronized (com.android.server.os.LinphoneTombstoneProtos.HeapObject.class) {
+              parser = PARSER;
+              if (parser == null) {
+                parser =
+                    new DefaultInstanceBasedParser<com.android.server.os.LinphoneTombstoneProtos.HeapObject>(
+                        DEFAULT_INSTANCE);
+                PARSER = parser;
+              }
+            }
+          }
+          return parser;
+      }
+      case GET_MEMOIZED_IS_INITIALIZED: {
+        return (byte) 1;
+      }
+      case SET_MEMOIZED_IS_INITIALIZED: {
+        return null;
+      }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:HeapObject)
+    private static final com.android.server.os.LinphoneTombstoneProtos.HeapObject DEFAULT_INSTANCE;
+    static {
+      HeapObject defaultInstance = new HeapObject();
+      // New instances are implicitly immutable so no need to make
+      // immutable.
+      DEFAULT_INSTANCE = defaultInstance;
+      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
+        HeapObject.class, defaultInstance);
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.HeapObject getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<HeapObject> PARSER;
+
+    public static com.google.protobuf.Parser<HeapObject> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
+  }
+
+  public interface MemoryErrorOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:MemoryError)
+      com.google.protobuf.MessageLiteOrBuilder {
+
+    /**
+     * <code>.MemoryError.Tool tool = 1;</code>
+     * @return The enum numeric value on the wire for tool.
+     */
+    int getToolValue();
+    /**
+     * <code>.MemoryError.Tool tool = 1;</code>
+     * @return The tool.
+     */
+    com.android.server.os.LinphoneTombstoneProtos.MemoryError.Tool getTool();
+
+    /**
+     * <code>.MemoryError.Type type = 2;</code>
+     * @return The enum numeric value on the wire for type.
+     */
+    int getTypeValue();
+    /**
+     * <code>.MemoryError.Type type = 2;</code>
+     * @return The type.
+     */
+    com.android.server.os.LinphoneTombstoneProtos.MemoryError.Type getType();
+
+    /**
+     * <code>.HeapObject heap = 3;</code>
+     * @return Whether the heap field is set.
+     */
+    boolean hasHeap();
+    /**
+     * <code>.HeapObject heap = 3;</code>
+     * @return The heap.
+     */
+    com.android.server.os.LinphoneTombstoneProtos.HeapObject getHeap();
+
+    public com.android.server.os.LinphoneTombstoneProtos.MemoryError.LocationCase getLocationCase();
+  }
+  /**
+   * Protobuf type {@code MemoryError}
+   */
+  public  static final class MemoryError extends
+      com.google.protobuf.GeneratedMessageLite<
+          MemoryError, MemoryError.Builder> implements
+      // @@protoc_insertion_point(message_implements:MemoryError)
+      MemoryErrorOrBuilder {
+    private MemoryError() {
+    }
+    /**
+     * Protobuf enum {@code MemoryError.Tool}
+     */
+    public enum Tool
+        implements com.google.protobuf.Internal.EnumLite {
+      /**
+       * <code>GWP_ASAN = 0;</code>
+       */
+      GWP_ASAN(0),
+      /**
+       * <code>SCUDO = 1;</code>
+       */
+      SCUDO(1),
+      UNRECOGNIZED(-1),
+      ;
+
+      /**
+       * <code>GWP_ASAN = 0;</code>
+       */
+      public static final int GWP_ASAN_VALUE = 0;
+      /**
+       * <code>SCUDO = 1;</code>
+       */
+      public static final int SCUDO_VALUE = 1;
+
+
+      @java.lang.Override
+      public final int getNumber() {
+        if (this == UNRECOGNIZED) {
+          throw new java.lang.IllegalArgumentException(
+              "Can't get the number of an unknown enum value.");
+        }
+        return value;
+      }
+
+      /**
+       * @param value The number of the enum to look for.
+       * @return The enum associated with the given number.
+       * @deprecated Use {@link #forNumber(int)} instead.
+       */
+      @java.lang.Deprecated
+      public static Tool valueOf(int value) {
+        return forNumber(value);
+      }
+
+      public static Tool forNumber(int value) {
+        switch (value) {
+          case 0: return GWP_ASAN;
+          case 1: return SCUDO;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Tool>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static final com.google.protobuf.Internal.EnumLiteMap<
+          Tool> internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Tool>() {
+              @java.lang.Override
+              public Tool findValueByNumber(int number) {
+                return Tool.forNumber(number);
+              }
+            };
+
+      public static com.google.protobuf.Internal.EnumVerifier 
+          internalGetVerifier() {
+        return ToolVerifier.INSTANCE;
+      }
+
+      private static final class ToolVerifier implements 
+           com.google.protobuf.Internal.EnumVerifier { 
+              static final com.google.protobuf.Internal.EnumVerifier           INSTANCE = new ToolVerifier();
+              @java.lang.Override
+              public boolean isInRange(int number) {
+                return Tool.forNumber(number) != null;
+              }
+            };
+
+      private final int value;
+
+      private Tool(int value) {
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:MemoryError.Tool)
+    }
+
+    /**
+     * Protobuf enum {@code MemoryError.Type}
+     */
+    public enum Type
+        implements com.google.protobuf.Internal.EnumLite {
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      UNKNOWN(0),
+      /**
+       * <code>USE_AFTER_FREE = 1;</code>
+       */
+      USE_AFTER_FREE(1),
+      /**
+       * <code>DOUBLE_FREE = 2;</code>
+       */
+      DOUBLE_FREE(2),
+      /**
+       * <code>INVALID_FREE = 3;</code>
+       */
+      INVALID_FREE(3),
+      /**
+       * <code>BUFFER_OVERFLOW = 4;</code>
+       */
+      BUFFER_OVERFLOW(4),
+      /**
+       * <code>BUFFER_UNDERFLOW = 5;</code>
+       */
+      BUFFER_UNDERFLOW(5),
+      UNRECOGNIZED(-1),
+      ;
+
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      public static final int UNKNOWN_VALUE = 0;
+      /**
+       * <code>USE_AFTER_FREE = 1;</code>
+       */
+      public static final int USE_AFTER_FREE_VALUE = 1;
+      /**
+       * <code>DOUBLE_FREE = 2;</code>
+       */
+      public static final int DOUBLE_FREE_VALUE = 2;
+      /**
+       * <code>INVALID_FREE = 3;</code>
+       */
+      public static final int INVALID_FREE_VALUE = 3;
+      /**
+       * <code>BUFFER_OVERFLOW = 4;</code>
+       */
+      public static final int BUFFER_OVERFLOW_VALUE = 4;
+      /**
+       * <code>BUFFER_UNDERFLOW = 5;</code>
+       */
+      public static final int BUFFER_UNDERFLOW_VALUE = 5;
+
+
+      @java.lang.Override
+      public final int getNumber() {
+        if (this == UNRECOGNIZED) {
+          throw new java.lang.IllegalArgumentException(
+              "Can't get the number of an unknown enum value.");
+        }
+        return value;
+      }
+
+      /**
+       * @param value The number of the enum to look for.
+       * @return The enum associated with the given number.
+       * @deprecated Use {@link #forNumber(int)} instead.
+       */
+      @java.lang.Deprecated
+      public static Type valueOf(int value) {
+        return forNumber(value);
+      }
+
+      public static Type forNumber(int value) {
+        switch (value) {
+          case 0: return UNKNOWN;
+          case 1: return USE_AFTER_FREE;
+          case 2: return DOUBLE_FREE;
+          case 3: return INVALID_FREE;
+          case 4: return BUFFER_OVERFLOW;
+          case 5: return BUFFER_UNDERFLOW;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static final com.google.protobuf.Internal.EnumLiteMap<
+          Type> internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              @java.lang.Override
+              public Type findValueByNumber(int number) {
+                return Type.forNumber(number);
+              }
+            };
+
+      public static com.google.protobuf.Internal.EnumVerifier 
+          internalGetVerifier() {
+        return TypeVerifier.INSTANCE;
+      }
+
+      private static final class TypeVerifier implements 
+           com.google.protobuf.Internal.EnumVerifier { 
+              static final com.google.protobuf.Internal.EnumVerifier           INSTANCE = new TypeVerifier();
+              @java.lang.Override
+              public boolean isInRange(int number) {
+                return Type.forNumber(number) != null;
+              }
+            };
+
+      private final int value;
+
+      private Type(int value) {
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:MemoryError.Type)
+    }
+
+    private int locationCase_ = 0;
+    private java.lang.Object location_;
+    public enum LocationCase {
+      HEAP(3),
+      LOCATION_NOT_SET(0);
+      private final int value;
+      private LocationCase(int value) {
+        this.value = value;
+      }
+      /**
+       * @deprecated Use {@link #forNumber(int)} instead.
+       */
+      @java.lang.Deprecated
+      public static LocationCase valueOf(int value) {
+        return forNumber(value);
+      }
+
+      public static LocationCase forNumber(int value) {
+        switch (value) {
+          case 3: return HEAP;
+          case 0: return LOCATION_NOT_SET;
+          default: return null;
+        }
+      }
+      public int getNumber() {
+        return this.value;
+      }
+    };
+
+    @java.lang.Override
+    public LocationCase
+    getLocationCase() {
+      return LocationCase.forNumber(
+          locationCase_);
+    }
+
+    private void clearLocation() {
+      locationCase_ = 0;
+      location_ = null;
+    }
+
+    public static final int TOOL_FIELD_NUMBER = 1;
+    private int tool_;
+    /**
+     * <code>.MemoryError.Tool tool = 1;</code>
+     * @return The enum numeric value on the wire for tool.
+     */
+    @java.lang.Override
+    public int getToolValue() {
+      return tool_;
+    }
+    /**
+     * <code>.MemoryError.Tool tool = 1;</code>
+     * @return The tool.
+     */
+    @java.lang.Override
+    public com.android.server.os.LinphoneTombstoneProtos.MemoryError.Tool getTool() {
+      com.android.server.os.LinphoneTombstoneProtos.MemoryError.Tool result = com.android.server.os.LinphoneTombstoneProtos.MemoryError.Tool.forNumber(tool_);
+      return result == null ? com.android.server.os.LinphoneTombstoneProtos.MemoryError.Tool.UNRECOGNIZED : result;
+    }
+    /**
+     * <code>.MemoryError.Tool tool = 1;</code>
+     * @param value The enum numeric value on the wire for tool to set.
+     */
+    private void setToolValue(int value) {
+        tool_ = value;
+    }
+    /**
+     * <code>.MemoryError.Tool tool = 1;</code>
+     * @param value The tool to set.
+     */
+    private void setTool(com.android.server.os.LinphoneTombstoneProtos.MemoryError.Tool value) {
+      tool_ = value.getNumber();
+      
+    }
+    /**
+     * <code>.MemoryError.Tool tool = 1;</code>
+     */
+    private void clearTool() {
+      
+      tool_ = 0;
+    }
+
+    public static final int TYPE_FIELD_NUMBER = 2;
+    private int type_;
+    /**
+     * <code>.MemoryError.Type type = 2;</code>
+     * @return The enum numeric value on the wire for type.
+     */
+    @java.lang.Override
+    public int getTypeValue() {
+      return type_;
+    }
+    /**
+     * <code>.MemoryError.Type type = 2;</code>
+     * @return The type.
+     */
+    @java.lang.Override
+    public com.android.server.os.LinphoneTombstoneProtos.MemoryError.Type getType() {
+      com.android.server.os.LinphoneTombstoneProtos.MemoryError.Type result = com.android.server.os.LinphoneTombstoneProtos.MemoryError.Type.forNumber(type_);
+      return result == null ? com.android.server.os.LinphoneTombstoneProtos.MemoryError.Type.UNRECOGNIZED : result;
+    }
+    /**
+     * <code>.MemoryError.Type type = 2;</code>
+     * @param value The enum numeric value on the wire for type to set.
+     */
+    private void setTypeValue(int value) {
+        type_ = value;
+    }
+    /**
+     * <code>.MemoryError.Type type = 2;</code>
+     * @param value The type to set.
+     */
+    private void setType(com.android.server.os.LinphoneTombstoneProtos.MemoryError.Type value) {
+      type_ = value.getNumber();
+      
+    }
+    /**
+     * <code>.MemoryError.Type type = 2;</code>
+     */
+    private void clearType() {
+      
+      type_ = 0;
+    }
+
+    public static final int HEAP_FIELD_NUMBER = 3;
+    /**
+     * <code>.HeapObject heap = 3;</code>
+     */
+    @java.lang.Override
+    public boolean hasHeap() {
+      return locationCase_ == 3;
+    }
+    /**
+     * <code>.HeapObject heap = 3;</code>
+     */
+    @java.lang.Override
+    public com.android.server.os.LinphoneTombstoneProtos.HeapObject getHeap() {
+      if (locationCase_ == 3) {
+         return (com.android.server.os.LinphoneTombstoneProtos.HeapObject) location_;
+      }
+      return com.android.server.os.LinphoneTombstoneProtos.HeapObject.getDefaultInstance();
+    }
+    /**
+     * <code>.HeapObject heap = 3;</code>
+     */
+    private void setHeap(com.android.server.os.LinphoneTombstoneProtos.HeapObject value) {
+      value.getClass();
+  location_ = value;
+      locationCase_ = 3;
+    }
+    /**
+     * <code>.HeapObject heap = 3;</code>
+     */
+    private void mergeHeap(com.android.server.os.LinphoneTombstoneProtos.HeapObject value) {
+      value.getClass();
+  if (locationCase_ == 3 &&
+          location_ != com.android.server.os.LinphoneTombstoneProtos.HeapObject.getDefaultInstance()) {
+        location_ = com.android.server.os.LinphoneTombstoneProtos.HeapObject.newBuilder((com.android.server.os.LinphoneTombstoneProtos.HeapObject) location_)
+            .mergeFrom(value).buildPartial();
+      } else {
+        location_ = value;
+      }
+      locationCase_ = 3;
+    }
+    /**
+     * <code>.HeapObject heap = 3;</code>
+     */
+    private void clearHeap() {
+      if (locationCase_ == 3) {
+        locationCase_ = 0;
+        location_ = null;
+      }
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryError parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryError parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryError parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryError parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryError parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryError parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryError parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryError parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryError parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryError parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryError parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryError parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return (Builder) DEFAULT_INSTANCE.createBuilder();
+    }
+    public static Builder newBuilder(com.android.server.os.LinphoneTombstoneProtos.MemoryError prototype) {
+      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
+    }
+
+    /**
+     * Protobuf type {@code MemoryError}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageLite.Builder<
+          com.android.server.os.LinphoneTombstoneProtos.MemoryError, Builder> implements
+        // @@protoc_insertion_point(builder_implements:MemoryError)
+        com.android.server.os.LinphoneTombstoneProtos.MemoryErrorOrBuilder {
+      // Construct using com.android.server.os.LinphoneTombstoneProtos.MemoryError.newBuilder()
+      private Builder() {
+        super(DEFAULT_INSTANCE);
+      }
+
+      @java.lang.Override
+      public LocationCase
+          getLocationCase() {
+        return instance.getLocationCase();
+      }
+
+      public Builder clearLocation() {
+        copyOnWrite();
+        instance.clearLocation();
+        return this;
+      }
+
+
+      /**
+       * <code>.MemoryError.Tool tool = 1;</code>
+       * @return The enum numeric value on the wire for tool.
+       */
+      @java.lang.Override
+      public int getToolValue() {
+        return instance.getToolValue();
+      }
+      /**
+       * <code>.MemoryError.Tool tool = 1;</code>
+       * @param value The tool to set.
+       * @return This builder for chaining.
+       */
+      public Builder setToolValue(int value) {
+        copyOnWrite();
+        instance.setToolValue(value);
+        return this;
+      }
+      /**
+       * <code>.MemoryError.Tool tool = 1;</code>
+       * @return The tool.
+       */
+      @java.lang.Override
+      public com.android.server.os.LinphoneTombstoneProtos.MemoryError.Tool getTool() {
+        return instance.getTool();
+      }
+      /**
+       * <code>.MemoryError.Tool tool = 1;</code>
+       * @param value The enum numeric value on the wire for tool to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTool(com.android.server.os.LinphoneTombstoneProtos.MemoryError.Tool value) {
+        copyOnWrite();
+        instance.setTool(value);
+        return this;
+      }
+      /**
+       * <code>.MemoryError.Tool tool = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearTool() {
+        copyOnWrite();
+        instance.clearTool();
+        return this;
+      }
+
+      /**
+       * <code>.MemoryError.Type type = 2;</code>
+       * @return The enum numeric value on the wire for type.
+       */
+      @java.lang.Override
+      public int getTypeValue() {
+        return instance.getTypeValue();
+      }
+      /**
+       * <code>.MemoryError.Type type = 2;</code>
+       * @param value The type to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTypeValue(int value) {
+        copyOnWrite();
+        instance.setTypeValue(value);
+        return this;
+      }
+      /**
+       * <code>.MemoryError.Type type = 2;</code>
+       * @return The type.
+       */
+      @java.lang.Override
+      public com.android.server.os.LinphoneTombstoneProtos.MemoryError.Type getType() {
+        return instance.getType();
+      }
+      /**
+       * <code>.MemoryError.Type type = 2;</code>
+       * @param value The enum numeric value on the wire for type to set.
+       * @return This builder for chaining.
+       */
+      public Builder setType(com.android.server.os.LinphoneTombstoneProtos.MemoryError.Type value) {
+        copyOnWrite();
+        instance.setType(value);
+        return this;
+      }
+      /**
+       * <code>.MemoryError.Type type = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearType() {
+        copyOnWrite();
+        instance.clearType();
+        return this;
+      }
+
+      /**
+       * <code>.HeapObject heap = 3;</code>
+       */
+      @java.lang.Override
+      public boolean hasHeap() {
+        return instance.hasHeap();
+      }
+      /**
+       * <code>.HeapObject heap = 3;</code>
+       */
+      @java.lang.Override
+      public com.android.server.os.LinphoneTombstoneProtos.HeapObject getHeap() {
+        return instance.getHeap();
+      }
+      /**
+       * <code>.HeapObject heap = 3;</code>
+       */
+      public Builder setHeap(com.android.server.os.LinphoneTombstoneProtos.HeapObject value) {
+        copyOnWrite();
+        instance.setHeap(value);
+        return this;
+      }
+      /**
+       * <code>.HeapObject heap = 3;</code>
+       */
+      public Builder setHeap(
+          com.android.server.os.LinphoneTombstoneProtos.HeapObject.Builder builderForValue) {
+        copyOnWrite();
+        instance.setHeap(builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>.HeapObject heap = 3;</code>
+       */
+      public Builder mergeHeap(com.android.server.os.LinphoneTombstoneProtos.HeapObject value) {
+        copyOnWrite();
+        instance.mergeHeap(value);
+        return this;
+      }
+      /**
+       * <code>.HeapObject heap = 3;</code>
+       */
+      public Builder clearHeap() {
+        copyOnWrite();
+        instance.clearHeap();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:MemoryError)
+    }
+    @java.lang.Override
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new com.android.server.os.LinphoneTombstoneProtos.MemoryError();
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case BUILD_MESSAGE_INFO: {
+            java.lang.Object[] objects = new java.lang.Object[] {
+              "location_",
+              "locationCase_",
+              "tool_",
+              "type_",
+              com.android.server.os.LinphoneTombstoneProtos.HeapObject.class,
+            };
+            java.lang.String info =
+                "\u0000\u0003\u0001\u0000\u0001\u0003\u0003\u0000\u0000\u0000\u0001\f\u0002\f\u0003" +
+                "<\u0000";
+            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          com.google.protobuf.Parser<com.android.server.os.LinphoneTombstoneProtos.MemoryError> parser = PARSER;
+          if (parser == null) {
+            synchronized (com.android.server.os.LinphoneTombstoneProtos.MemoryError.class) {
+              parser = PARSER;
+              if (parser == null) {
+                parser =
+                    new DefaultInstanceBasedParser<com.android.server.os.LinphoneTombstoneProtos.MemoryError>(
+                        DEFAULT_INSTANCE);
+                PARSER = parser;
+              }
+            }
+          }
+          return parser;
+      }
+      case GET_MEMOIZED_IS_INITIALIZED: {
+        return (byte) 1;
+      }
+      case SET_MEMOIZED_IS_INITIALIZED: {
+        return null;
+      }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:MemoryError)
+    private static final com.android.server.os.LinphoneTombstoneProtos.MemoryError DEFAULT_INSTANCE;
+    static {
+      MemoryError defaultInstance = new MemoryError();
+      // New instances are implicitly immutable so no need to make
+      // immutable.
+      DEFAULT_INSTANCE = defaultInstance;
+      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
+        MemoryError.class, defaultInstance);
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryError getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<MemoryError> PARSER;
+
+    public static com.google.protobuf.Parser<MemoryError> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
+  }
+
+  public interface CauseOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:Cause)
+      com.google.protobuf.MessageLiteOrBuilder {
+
+    /**
+     * <code>string human_readable = 1;</code>
+     * @return The humanReadable.
+     */
+    java.lang.String getHumanReadable();
+    /**
+     * <code>string human_readable = 1;</code>
+     * @return The bytes for humanReadable.
+     */
+    com.google.protobuf.ByteString
+        getHumanReadableBytes();
+
+    /**
+     * <code>.MemoryError memory_error = 2;</code>
+     * @return Whether the memoryError field is set.
+     */
+    boolean hasMemoryError();
+    /**
+     * <code>.MemoryError memory_error = 2;</code>
+     * @return The memoryError.
+     */
+    com.android.server.os.LinphoneTombstoneProtos.MemoryError getMemoryError();
+
+    public com.android.server.os.LinphoneTombstoneProtos.Cause.DetailsCase getDetailsCase();
+  }
+  /**
+   * Protobuf type {@code Cause}
+   */
+  public  static final class Cause extends
+      com.google.protobuf.GeneratedMessageLite<
+          Cause, Cause.Builder> implements
+      // @@protoc_insertion_point(message_implements:Cause)
+      CauseOrBuilder {
+    private Cause() {
+      humanReadable_ = "";
+    }
+    private int detailsCase_ = 0;
+    private java.lang.Object details_;
+    public enum DetailsCase {
+      MEMORY_ERROR(2),
+      DETAILS_NOT_SET(0);
+      private final int value;
+      private DetailsCase(int value) {
+        this.value = value;
+      }
+      /**
+       * @deprecated Use {@link #forNumber(int)} instead.
+       */
+      @java.lang.Deprecated
+      public static DetailsCase valueOf(int value) {
+        return forNumber(value);
+      }
+
+      public static DetailsCase forNumber(int value) {
+        switch (value) {
+          case 2: return MEMORY_ERROR;
+          case 0: return DETAILS_NOT_SET;
+          default: return null;
+        }
+      }
+      public int getNumber() {
+        return this.value;
+      }
+    };
+
+    @java.lang.Override
+    public DetailsCase
+    getDetailsCase() {
+      return DetailsCase.forNumber(
+          detailsCase_);
+    }
+
+    private void clearDetails() {
+      detailsCase_ = 0;
+      details_ = null;
+    }
+
+    public static final int HUMAN_READABLE_FIELD_NUMBER = 1;
+    private java.lang.String humanReadable_;
+    /**
+     * <code>string human_readable = 1;</code>
+     * @return The humanReadable.
+     */
+    @java.lang.Override
+    public java.lang.String getHumanReadable() {
+      return humanReadable_;
+    }
+    /**
+     * <code>string human_readable = 1;</code>
+     * @return The bytes for humanReadable.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getHumanReadableBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(humanReadable_);
+    }
+    /**
+     * <code>string human_readable = 1;</code>
+     * @param value The humanReadable to set.
+     */
+    private void setHumanReadable(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      humanReadable_ = value;
+    }
+    /**
+     * <code>string human_readable = 1;</code>
+     */
+    private void clearHumanReadable() {
+      
+      humanReadable_ = getDefaultInstance().getHumanReadable();
+    }
+    /**
+     * <code>string human_readable = 1;</code>
+     * @param value The bytes for humanReadable to set.
+     */
+    private void setHumanReadableBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      humanReadable_ = value.toStringUtf8();
+      
+    }
+
+    public static final int MEMORY_ERROR_FIELD_NUMBER = 2;
+    /**
+     * <code>.MemoryError memory_error = 2;</code>
+     */
+    @java.lang.Override
+    public boolean hasMemoryError() {
+      return detailsCase_ == 2;
+    }
+    /**
+     * <code>.MemoryError memory_error = 2;</code>
+     */
+    @java.lang.Override
+    public com.android.server.os.LinphoneTombstoneProtos.MemoryError getMemoryError() {
+      if (detailsCase_ == 2) {
+         return (com.android.server.os.LinphoneTombstoneProtos.MemoryError) details_;
+      }
+      return com.android.server.os.LinphoneTombstoneProtos.MemoryError.getDefaultInstance();
+    }
+    /**
+     * <code>.MemoryError memory_error = 2;</code>
+     */
+    private void setMemoryError(com.android.server.os.LinphoneTombstoneProtos.MemoryError value) {
+      value.getClass();
+  details_ = value;
+      detailsCase_ = 2;
+    }
+    /**
+     * <code>.MemoryError memory_error = 2;</code>
+     */
+    private void mergeMemoryError(com.android.server.os.LinphoneTombstoneProtos.MemoryError value) {
+      value.getClass();
+  if (detailsCase_ == 2 &&
+          details_ != com.android.server.os.LinphoneTombstoneProtos.MemoryError.getDefaultInstance()) {
+        details_ = com.android.server.os.LinphoneTombstoneProtos.MemoryError.newBuilder((com.android.server.os.LinphoneTombstoneProtos.MemoryError) details_)
+            .mergeFrom(value).buildPartial();
+      } else {
+        details_ = value;
+      }
+      detailsCase_ = 2;
+    }
+    /**
+     * <code>.MemoryError memory_error = 2;</code>
+     */
+    private void clearMemoryError() {
+      if (detailsCase_ == 2) {
+        detailsCase_ = 0;
+        details_ = null;
+      }
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.Cause parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Cause parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Cause parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Cause parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Cause parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Cause parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Cause parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Cause parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Cause parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Cause parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Cause parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Cause parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return (Builder) DEFAULT_INSTANCE.createBuilder();
+    }
+    public static Builder newBuilder(com.android.server.os.LinphoneTombstoneProtos.Cause prototype) {
+      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
+    }
+
+    /**
+     * Protobuf type {@code Cause}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageLite.Builder<
+          com.android.server.os.LinphoneTombstoneProtos.Cause, Builder> implements
+        // @@protoc_insertion_point(builder_implements:Cause)
+        com.android.server.os.LinphoneTombstoneProtos.CauseOrBuilder {
+      // Construct using com.android.server.os.LinphoneTombstoneProtos.Cause.newBuilder()
+      private Builder() {
+        super(DEFAULT_INSTANCE);
+      }
+
+      @java.lang.Override
+      public DetailsCase
+          getDetailsCase() {
+        return instance.getDetailsCase();
+      }
+
+      public Builder clearDetails() {
+        copyOnWrite();
+        instance.clearDetails();
+        return this;
+      }
+
+
+      /**
+       * <code>string human_readable = 1;</code>
+       * @return The humanReadable.
+       */
+      @java.lang.Override
+      public java.lang.String getHumanReadable() {
+        return instance.getHumanReadable();
+      }
+      /**
+       * <code>string human_readable = 1;</code>
+       * @return The bytes for humanReadable.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getHumanReadableBytes() {
+        return instance.getHumanReadableBytes();
+      }
+      /**
+       * <code>string human_readable = 1;</code>
+       * @param value The humanReadable to set.
+       * @return This builder for chaining.
+       */
+      public Builder setHumanReadable(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setHumanReadable(value);
+        return this;
+      }
+      /**
+       * <code>string human_readable = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearHumanReadable() {
+        copyOnWrite();
+        instance.clearHumanReadable();
+        return this;
+      }
+      /**
+       * <code>string human_readable = 1;</code>
+       * @param value The bytes for humanReadable to set.
+       * @return This builder for chaining.
+       */
+      public Builder setHumanReadableBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setHumanReadableBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>.MemoryError memory_error = 2;</code>
+       */
+      @java.lang.Override
+      public boolean hasMemoryError() {
+        return instance.hasMemoryError();
+      }
+      /**
+       * <code>.MemoryError memory_error = 2;</code>
+       */
+      @java.lang.Override
+      public com.android.server.os.LinphoneTombstoneProtos.MemoryError getMemoryError() {
+        return instance.getMemoryError();
+      }
+      /**
+       * <code>.MemoryError memory_error = 2;</code>
+       */
+      public Builder setMemoryError(com.android.server.os.LinphoneTombstoneProtos.MemoryError value) {
+        copyOnWrite();
+        instance.setMemoryError(value);
+        return this;
+      }
+      /**
+       * <code>.MemoryError memory_error = 2;</code>
+       */
+      public Builder setMemoryError(
+          com.android.server.os.LinphoneTombstoneProtos.MemoryError.Builder builderForValue) {
+        copyOnWrite();
+        instance.setMemoryError(builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>.MemoryError memory_error = 2;</code>
+       */
+      public Builder mergeMemoryError(com.android.server.os.LinphoneTombstoneProtos.MemoryError value) {
+        copyOnWrite();
+        instance.mergeMemoryError(value);
+        return this;
+      }
+      /**
+       * <code>.MemoryError memory_error = 2;</code>
+       */
+      public Builder clearMemoryError() {
+        copyOnWrite();
+        instance.clearMemoryError();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:Cause)
+    }
+    @java.lang.Override
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new com.android.server.os.LinphoneTombstoneProtos.Cause();
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case BUILD_MESSAGE_INFO: {
+            java.lang.Object[] objects = new java.lang.Object[] {
+              "details_",
+              "detailsCase_",
+              "humanReadable_",
+              com.android.server.os.LinphoneTombstoneProtos.MemoryError.class,
+            };
+            java.lang.String info =
+                "\u0000\u0002\u0001\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u0208\u0002<\u0000" +
+                "";
+            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          com.google.protobuf.Parser<com.android.server.os.LinphoneTombstoneProtos.Cause> parser = PARSER;
+          if (parser == null) {
+            synchronized (com.android.server.os.LinphoneTombstoneProtos.Cause.class) {
+              parser = PARSER;
+              if (parser == null) {
+                parser =
+                    new DefaultInstanceBasedParser<com.android.server.os.LinphoneTombstoneProtos.Cause>(
+                        DEFAULT_INSTANCE);
+                PARSER = parser;
+              }
+            }
+          }
+          return parser;
+      }
+      case GET_MEMOIZED_IS_INITIALIZED: {
+        return (byte) 1;
+      }
+      case SET_MEMOIZED_IS_INITIALIZED: {
+        return null;
+      }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:Cause)
+    private static final com.android.server.os.LinphoneTombstoneProtos.Cause DEFAULT_INSTANCE;
+    static {
+      Cause defaultInstance = new Cause();
+      // New instances are implicitly immutable so no need to make
+      // immutable.
+      DEFAULT_INSTANCE = defaultInstance;
+      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
+        Cause.class, defaultInstance);
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.Cause getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<Cause> PARSER;
+
+    public static com.google.protobuf.Parser<Cause> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
+  }
+
+  public interface RegisterOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:Register)
+      com.google.protobuf.MessageLiteOrBuilder {
+
+    /**
+     * <code>string name = 1;</code>
+     * @return The name.
+     */
+    java.lang.String getName();
+    /**
+     * <code>string name = 1;</code>
+     * @return The bytes for name.
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    /**
+     * <code>uint64 u64 = 2;</code>
+     * @return The u64.
+     */
+    long getU64();
+  }
+  /**
+   * Protobuf type {@code Register}
+   */
+  public  static final class Register extends
+      com.google.protobuf.GeneratedMessageLite<
+          Register, Register.Builder> implements
+      // @@protoc_insertion_point(message_implements:Register)
+      RegisterOrBuilder {
+    private Register() {
+      name_ = "";
+    }
+    public static final int NAME_FIELD_NUMBER = 1;
+    private java.lang.String name_;
+    /**
+     * <code>string name = 1;</code>
+     * @return The name.
+     */
+    @java.lang.Override
+    public java.lang.String getName() {
+      return name_;
+    }
+    /**
+     * <code>string name = 1;</code>
+     * @return The bytes for name.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(name_);
+    }
+    /**
+     * <code>string name = 1;</code>
+     * @param value The name to set.
+     */
+    private void setName(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      name_ = value;
+    }
+    /**
+     * <code>string name = 1;</code>
+     */
+    private void clearName() {
+      
+      name_ = getDefaultInstance().getName();
+    }
+    /**
+     * <code>string name = 1;</code>
+     * @param value The bytes for name to set.
+     */
+    private void setNameBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      name_ = value.toStringUtf8();
+      
+    }
+
+    public static final int U64_FIELD_NUMBER = 2;
+    private long u64_;
+    /**
+     * <code>uint64 u64 = 2;</code>
+     * @return The u64.
+     */
+    @java.lang.Override
+    public long getU64() {
+      return u64_;
+    }
+    /**
+     * <code>uint64 u64 = 2;</code>
+     * @param value The u64 to set.
+     */
+    private void setU64(long value) {
+      
+      u64_ = value;
+    }
+    /**
+     * <code>uint64 u64 = 2;</code>
+     */
+    private void clearU64() {
+      
+      u64_ = 0L;
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.Register parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Register parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Register parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Register parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Register parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Register parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Register parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Register parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Register parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Register parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Register parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Register parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return (Builder) DEFAULT_INSTANCE.createBuilder();
+    }
+    public static Builder newBuilder(com.android.server.os.LinphoneTombstoneProtos.Register prototype) {
+      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
+    }
+
+    /**
+     * Protobuf type {@code Register}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageLite.Builder<
+          com.android.server.os.LinphoneTombstoneProtos.Register, Builder> implements
+        // @@protoc_insertion_point(builder_implements:Register)
+        com.android.server.os.LinphoneTombstoneProtos.RegisterOrBuilder {
+      // Construct using com.android.server.os.LinphoneTombstoneProtos.Register.newBuilder()
+      private Builder() {
+        super(DEFAULT_INSTANCE);
+      }
+
+
+      /**
+       * <code>string name = 1;</code>
+       * @return The name.
+       */
+      @java.lang.Override
+      public java.lang.String getName() {
+        return instance.getName();
+      }
+      /**
+       * <code>string name = 1;</code>
+       * @return The bytes for name.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        return instance.getNameBytes();
+      }
+      /**
+       * <code>string name = 1;</code>
+       * @param value The name to set.
+       * @return This builder for chaining.
+       */
+      public Builder setName(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setName(value);
+        return this;
+      }
+      /**
+       * <code>string name = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearName() {
+        copyOnWrite();
+        instance.clearName();
+        return this;
+      }
+      /**
+       * <code>string name = 1;</code>
+       * @param value The bytes for name to set.
+       * @return This builder for chaining.
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setNameBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>uint64 u64 = 2;</code>
+       * @return The u64.
+       */
+      @java.lang.Override
+      public long getU64() {
+        return instance.getU64();
+      }
+      /**
+       * <code>uint64 u64 = 2;</code>
+       * @param value The u64 to set.
+       * @return This builder for chaining.
+       */
+      public Builder setU64(long value) {
+        copyOnWrite();
+        instance.setU64(value);
+        return this;
+      }
+      /**
+       * <code>uint64 u64 = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearU64() {
+        copyOnWrite();
+        instance.clearU64();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:Register)
+    }
+    @java.lang.Override
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new com.android.server.os.LinphoneTombstoneProtos.Register();
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case BUILD_MESSAGE_INFO: {
+            java.lang.Object[] objects = new java.lang.Object[] {
+              "name_",
+              "u64_",
+            };
+            java.lang.String info =
+                "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u0208\u0002\u0003" +
+                "";
+            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          com.google.protobuf.Parser<com.android.server.os.LinphoneTombstoneProtos.Register> parser = PARSER;
+          if (parser == null) {
+            synchronized (com.android.server.os.LinphoneTombstoneProtos.Register.class) {
+              parser = PARSER;
+              if (parser == null) {
+                parser =
+                    new DefaultInstanceBasedParser<com.android.server.os.LinphoneTombstoneProtos.Register>(
+                        DEFAULT_INSTANCE);
+                PARSER = parser;
+              }
+            }
+          }
+          return parser;
+      }
+      case GET_MEMOIZED_IS_INITIALIZED: {
+        return (byte) 1;
+      }
+      case SET_MEMOIZED_IS_INITIALIZED: {
+        return null;
+      }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:Register)
+    private static final com.android.server.os.LinphoneTombstoneProtos.Register DEFAULT_INSTANCE;
+    static {
+      Register defaultInstance = new Register();
+      // New instances are implicitly immutable so no need to make
+      // immutable.
+      DEFAULT_INSTANCE = defaultInstance;
+      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
+        Register.class, defaultInstance);
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.Register getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<Register> PARSER;
+
+    public static com.google.protobuf.Parser<Register> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
+  }
+
+  public interface ThreadOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:Thread)
+      com.google.protobuf.MessageLiteOrBuilder {
+
+    /**
+     * <code>int32 id = 1;</code>
+     * @return The id.
+     */
+    int getId();
+
+    /**
+     * <code>string name = 2;</code>
+     * @return The name.
+     */
+    java.lang.String getName();
+    /**
+     * <code>string name = 2;</code>
+     * @return The bytes for name.
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    /**
+     * <code>repeated .Register registers = 3;</code>
+     */
+    java.util.List<com.android.server.os.LinphoneTombstoneProtos.Register> 
+        getRegistersList();
+    /**
+     * <code>repeated .Register registers = 3;</code>
+     */
+    com.android.server.os.LinphoneTombstoneProtos.Register getRegisters(int index);
+    /**
+     * <code>repeated .Register registers = 3;</code>
+     */
+    int getRegistersCount();
+
+    /**
+     * <code>repeated string backtrace_note = 7;</code>
+     * @return A list containing the backtraceNote.
+     */
+    java.util.List<java.lang.String>
+        getBacktraceNoteList();
+    /**
+     * <code>repeated string backtrace_note = 7;</code>
+     * @return The count of backtraceNote.
+     */
+    int getBacktraceNoteCount();
+    /**
+     * <code>repeated string backtrace_note = 7;</code>
+     * @param index The index of the element to return.
+     * @return The backtraceNote at the given index.
+     */
+    java.lang.String getBacktraceNote(int index);
+    /**
+     * <code>repeated string backtrace_note = 7;</code>
+     * @param index The index of the element to return.
+     * @return The backtraceNote at the given index.
+     */
+    com.google.protobuf.ByteString
+        getBacktraceNoteBytes(int index);
+
+    /**
+     * <code>repeated string unreadable_elf_files = 9;</code>
+     * @return A list containing the unreadableElfFiles.
+     */
+    java.util.List<java.lang.String>
+        getUnreadableElfFilesList();
+    /**
+     * <code>repeated string unreadable_elf_files = 9;</code>
+     * @return The count of unreadableElfFiles.
+     */
+    int getUnreadableElfFilesCount();
+    /**
+     * <code>repeated string unreadable_elf_files = 9;</code>
+     * @param index The index of the element to return.
+     * @return The unreadableElfFiles at the given index.
+     */
+    java.lang.String getUnreadableElfFiles(int index);
+    /**
+     * <code>repeated string unreadable_elf_files = 9;</code>
+     * @param index The index of the element to return.
+     * @return The unreadableElfFiles at the given index.
+     */
+    com.google.protobuf.ByteString
+        getUnreadableElfFilesBytes(int index);
+
+    /**
+     * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+     */
+    java.util.List<com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> 
+        getCurrentBacktraceList();
+    /**
+     * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+     */
+    com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame getCurrentBacktrace(int index);
+    /**
+     * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+     */
+    int getCurrentBacktraceCount();
+
+    /**
+     * <code>repeated .MemoryDump memory_dump = 5;</code>
+     */
+    java.util.List<com.android.server.os.LinphoneTombstoneProtos.MemoryDump> 
+        getMemoryDumpList();
+    /**
+     * <code>repeated .MemoryDump memory_dump = 5;</code>
+     */
+    com.android.server.os.LinphoneTombstoneProtos.MemoryDump getMemoryDump(int index);
+    /**
+     * <code>repeated .MemoryDump memory_dump = 5;</code>
+     */
+    int getMemoryDumpCount();
+
+    /**
+     * <code>int64 tagged_addr_ctrl = 6;</code>
+     * @return The taggedAddrCtrl.
+     */
+    long getTaggedAddrCtrl();
+
+    /**
+     * <code>int64 pac_enabled_keys = 8;</code>
+     * @return The pacEnabledKeys.
+     */
+    long getPacEnabledKeys();
+  }
+  /**
+   * Protobuf type {@code Thread}
+   */
+  public  static final class Thread extends
+      com.google.protobuf.GeneratedMessageLite<
+          Thread, Thread.Builder> implements
+      // @@protoc_insertion_point(message_implements:Thread)
+      ThreadOrBuilder {
+    private Thread() {
+      name_ = "";
+      registers_ = emptyProtobufList();
+      backtraceNote_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
+      unreadableElfFiles_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
+      currentBacktrace_ = emptyProtobufList();
+      memoryDump_ = emptyProtobufList();
+    }
+    public static final int ID_FIELD_NUMBER = 1;
+    private int id_;
+    /**
+     * <code>int32 id = 1;</code>
+     * @return The id.
+     */
+    @java.lang.Override
+    public int getId() {
+      return id_;
+    }
+    /**
+     * <code>int32 id = 1;</code>
+     * @param value The id to set.
+     */
+    private void setId(int value) {
+      
+      id_ = value;
+    }
+    /**
+     * <code>int32 id = 1;</code>
+     */
+    private void clearId() {
+      
+      id_ = 0;
+    }
+
+    public static final int NAME_FIELD_NUMBER = 2;
+    private java.lang.String name_;
+    /**
+     * <code>string name = 2;</code>
+     * @return The name.
+     */
+    @java.lang.Override
+    public java.lang.String getName() {
+      return name_;
+    }
+    /**
+     * <code>string name = 2;</code>
+     * @return The bytes for name.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(name_);
+    }
+    /**
+     * <code>string name = 2;</code>
+     * @param value The name to set.
+     */
+    private void setName(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      name_ = value;
+    }
+    /**
+     * <code>string name = 2;</code>
+     */
+    private void clearName() {
+      
+      name_ = getDefaultInstance().getName();
+    }
+    /**
+     * <code>string name = 2;</code>
+     * @param value The bytes for name to set.
+     */
+    private void setNameBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      name_ = value.toStringUtf8();
+      
+    }
+
+    public static final int REGISTERS_FIELD_NUMBER = 3;
+    private com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.Register> registers_;
+    /**
+     * <code>repeated .Register registers = 3;</code>
+     */
+    @java.lang.Override
+    public java.util.List<com.android.server.os.LinphoneTombstoneProtos.Register> getRegistersList() {
+      return registers_;
+    }
+    /**
+     * <code>repeated .Register registers = 3;</code>
+     */
+    public java.util.List<? extends com.android.server.os.LinphoneTombstoneProtos.RegisterOrBuilder> 
+        getRegistersOrBuilderList() {
+      return registers_;
+    }
+    /**
+     * <code>repeated .Register registers = 3;</code>
+     */
+    @java.lang.Override
+    public int getRegistersCount() {
+      return registers_.size();
+    }
+    /**
+     * <code>repeated .Register registers = 3;</code>
+     */
+    @java.lang.Override
+    public com.android.server.os.LinphoneTombstoneProtos.Register getRegisters(int index) {
+      return registers_.get(index);
+    }
+    /**
+     * <code>repeated .Register registers = 3;</code>
+     */
+    public com.android.server.os.LinphoneTombstoneProtos.RegisterOrBuilder getRegistersOrBuilder(
+        int index) {
+      return registers_.get(index);
+    }
+    private void ensureRegistersIsMutable() {
+      com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.Register> tmp = registers_;
+      if (!tmp.isModifiable()) {
+        registers_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
+       }
+    }
+
+    /**
+     * <code>repeated .Register registers = 3;</code>
+     */
+    private void setRegisters(
+        int index, com.android.server.os.LinphoneTombstoneProtos.Register value) {
+      value.getClass();
+  ensureRegistersIsMutable();
+      registers_.set(index, value);
+    }
+    /**
+     * <code>repeated .Register registers = 3;</code>
+     */
+    private void addRegisters(com.android.server.os.LinphoneTombstoneProtos.Register value) {
+      value.getClass();
+  ensureRegistersIsMutable();
+      registers_.add(value);
+    }
+    /**
+     * <code>repeated .Register registers = 3;</code>
+     */
+    private void addRegisters(
+        int index, com.android.server.os.LinphoneTombstoneProtos.Register value) {
+      value.getClass();
+  ensureRegistersIsMutable();
+      registers_.add(index, value);
+    }
+    /**
+     * <code>repeated .Register registers = 3;</code>
+     */
+    private void addAllRegisters(
+        java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.Register> values) {
+      ensureRegistersIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, registers_);
+    }
+    /**
+     * <code>repeated .Register registers = 3;</code>
+     */
+    private void clearRegisters() {
+      registers_ = emptyProtobufList();
+    }
+    /**
+     * <code>repeated .Register registers = 3;</code>
+     */
+    private void removeRegisters(int index) {
+      ensureRegistersIsMutable();
+      registers_.remove(index);
+    }
+
+    public static final int BACKTRACE_NOTE_FIELD_NUMBER = 7;
+    private com.google.protobuf.Internal.ProtobufList<java.lang.String> backtraceNote_;
+    /**
+     * <code>repeated string backtrace_note = 7;</code>
+     * @return A list containing the backtraceNote.
+     */
+    @java.lang.Override
+    public java.util.List<java.lang.String> getBacktraceNoteList() {
+      return backtraceNote_;
+    }
+    /**
+     * <code>repeated string backtrace_note = 7;</code>
+     * @return The count of backtraceNote.
+     */
+    @java.lang.Override
+    public int getBacktraceNoteCount() {
+      return backtraceNote_.size();
+    }
+    /**
+     * <code>repeated string backtrace_note = 7;</code>
+     * @param index The index of the element to return.
+     * @return The backtraceNote at the given index.
+     */
+    @java.lang.Override
+    public java.lang.String getBacktraceNote(int index) {
+      return backtraceNote_.get(index);
+    }
+    /**
+     * <code>repeated string backtrace_note = 7;</code>
+     * @param index The index of the value to return.
+     * @return The bytes of the backtraceNote at the given index.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getBacktraceNoteBytes(int index) {
+      return com.google.protobuf.ByteString.copyFromUtf8(
+          backtraceNote_.get(index));
+    }
+    private void ensureBacktraceNoteIsMutable() {
+      com.google.protobuf.Internal.ProtobufList<java.lang.String> tmp =
+          backtraceNote_;  if (!tmp.isModifiable()) {
+        backtraceNote_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
+       }
+    }
+    /**
+     * <code>repeated string backtrace_note = 7;</code>
+     * @param index The index to set the value at.
+     * @param value The backtraceNote to set.
+     */
+    private void setBacktraceNote(
+        int index, java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  ensureBacktraceNoteIsMutable();
+      backtraceNote_.set(index, value);
+    }
+    /**
+     * <code>repeated string backtrace_note = 7;</code>
+     * @param value The backtraceNote to add.
+     */
+    private void addBacktraceNote(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  ensureBacktraceNoteIsMutable();
+      backtraceNote_.add(value);
+    }
+    /**
+     * <code>repeated string backtrace_note = 7;</code>
+     * @param values The backtraceNote to add.
+     */
+    private void addAllBacktraceNote(
+        java.lang.Iterable<java.lang.String> values) {
+      ensureBacktraceNoteIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, backtraceNote_);
+    }
+    /**
+     * <code>repeated string backtrace_note = 7;</code>
+     */
+    private void clearBacktraceNote() {
+      backtraceNote_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
+    }
+    /**
+     * <code>repeated string backtrace_note = 7;</code>
+     * @param value The bytes of the backtraceNote to add.
+     */
+    private void addBacktraceNoteBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      ensureBacktraceNoteIsMutable();
+      backtraceNote_.add(value.toStringUtf8());
+    }
+
+    public static final int UNREADABLE_ELF_FILES_FIELD_NUMBER = 9;
+    private com.google.protobuf.Internal.ProtobufList<java.lang.String> unreadableElfFiles_;
+    /**
+     * <code>repeated string unreadable_elf_files = 9;</code>
+     * @return A list containing the unreadableElfFiles.
+     */
+    @java.lang.Override
+    public java.util.List<java.lang.String> getUnreadableElfFilesList() {
+      return unreadableElfFiles_;
+    }
+    /**
+     * <code>repeated string unreadable_elf_files = 9;</code>
+     * @return The count of unreadableElfFiles.
+     */
+    @java.lang.Override
+    public int getUnreadableElfFilesCount() {
+      return unreadableElfFiles_.size();
+    }
+    /**
+     * <code>repeated string unreadable_elf_files = 9;</code>
+     * @param index The index of the element to return.
+     * @return The unreadableElfFiles at the given index.
+     */
+    @java.lang.Override
+    public java.lang.String getUnreadableElfFiles(int index) {
+      return unreadableElfFiles_.get(index);
+    }
+    /**
+     * <code>repeated string unreadable_elf_files = 9;</code>
+     * @param index The index of the value to return.
+     * @return The bytes of the unreadableElfFiles at the given index.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getUnreadableElfFilesBytes(int index) {
+      return com.google.protobuf.ByteString.copyFromUtf8(
+          unreadableElfFiles_.get(index));
+    }
+    private void ensureUnreadableElfFilesIsMutable() {
+      com.google.protobuf.Internal.ProtobufList<java.lang.String> tmp =
+          unreadableElfFiles_;  if (!tmp.isModifiable()) {
+        unreadableElfFiles_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
+       }
+    }
+    /**
+     * <code>repeated string unreadable_elf_files = 9;</code>
+     * @param index The index to set the value at.
+     * @param value The unreadableElfFiles to set.
+     */
+    private void setUnreadableElfFiles(
+        int index, java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  ensureUnreadableElfFilesIsMutable();
+      unreadableElfFiles_.set(index, value);
+    }
+    /**
+     * <code>repeated string unreadable_elf_files = 9;</code>
+     * @param value The unreadableElfFiles to add.
+     */
+    private void addUnreadableElfFiles(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  ensureUnreadableElfFilesIsMutable();
+      unreadableElfFiles_.add(value);
+    }
+    /**
+     * <code>repeated string unreadable_elf_files = 9;</code>
+     * @param values The unreadableElfFiles to add.
+     */
+    private void addAllUnreadableElfFiles(
+        java.lang.Iterable<java.lang.String> values) {
+      ensureUnreadableElfFilesIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, unreadableElfFiles_);
+    }
+    /**
+     * <code>repeated string unreadable_elf_files = 9;</code>
+     */
+    private void clearUnreadableElfFiles() {
+      unreadableElfFiles_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
+    }
+    /**
+     * <code>repeated string unreadable_elf_files = 9;</code>
+     * @param value The bytes of the unreadableElfFiles to add.
+     */
+    private void addUnreadableElfFilesBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      ensureUnreadableElfFilesIsMutable();
+      unreadableElfFiles_.add(value.toStringUtf8());
+    }
+
+    public static final int CURRENT_BACKTRACE_FIELD_NUMBER = 4;
+    private com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> currentBacktrace_;
+    /**
+     * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+     */
+    @java.lang.Override
+    public java.util.List<com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> getCurrentBacktraceList() {
+      return currentBacktrace_;
+    }
+    /**
+     * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+     */
+    public java.util.List<? extends com.android.server.os.LinphoneTombstoneProtos.BacktraceFrameOrBuilder> 
+        getCurrentBacktraceOrBuilderList() {
+      return currentBacktrace_;
+    }
+    /**
+     * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+     */
+    @java.lang.Override
+    public int getCurrentBacktraceCount() {
+      return currentBacktrace_.size();
+    }
+    /**
+     * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+     */
+    @java.lang.Override
+    public com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame getCurrentBacktrace(int index) {
+      return currentBacktrace_.get(index);
+    }
+    /**
+     * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+     */
+    public com.android.server.os.LinphoneTombstoneProtos.BacktraceFrameOrBuilder getCurrentBacktraceOrBuilder(
+        int index) {
+      return currentBacktrace_.get(index);
+    }
+    private void ensureCurrentBacktraceIsMutable() {
+      com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> tmp = currentBacktrace_;
+      if (!tmp.isModifiable()) {
+        currentBacktrace_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
+       }
+    }
+
+    /**
+     * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+     */
+    private void setCurrentBacktrace(
+        int index, com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame value) {
+      value.getClass();
+  ensureCurrentBacktraceIsMutable();
+      currentBacktrace_.set(index, value);
+    }
+    /**
+     * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+     */
+    private void addCurrentBacktrace(com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame value) {
+      value.getClass();
+  ensureCurrentBacktraceIsMutable();
+      currentBacktrace_.add(value);
+    }
+    /**
+     * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+     */
+    private void addCurrentBacktrace(
+        int index, com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame value) {
+      value.getClass();
+  ensureCurrentBacktraceIsMutable();
+      currentBacktrace_.add(index, value);
+    }
+    /**
+     * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+     */
+    private void addAllCurrentBacktrace(
+        java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> values) {
+      ensureCurrentBacktraceIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, currentBacktrace_);
+    }
+    /**
+     * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+     */
+    private void clearCurrentBacktrace() {
+      currentBacktrace_ = emptyProtobufList();
+    }
+    /**
+     * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+     */
+    private void removeCurrentBacktrace(int index) {
+      ensureCurrentBacktraceIsMutable();
+      currentBacktrace_.remove(index);
+    }
+
+    public static final int MEMORY_DUMP_FIELD_NUMBER = 5;
+    private com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.MemoryDump> memoryDump_;
+    /**
+     * <code>repeated .MemoryDump memory_dump = 5;</code>
+     */
+    @java.lang.Override
+    public java.util.List<com.android.server.os.LinphoneTombstoneProtos.MemoryDump> getMemoryDumpList() {
+      return memoryDump_;
+    }
+    /**
+     * <code>repeated .MemoryDump memory_dump = 5;</code>
+     */
+    public java.util.List<? extends com.android.server.os.LinphoneTombstoneProtos.MemoryDumpOrBuilder> 
+        getMemoryDumpOrBuilderList() {
+      return memoryDump_;
+    }
+    /**
+     * <code>repeated .MemoryDump memory_dump = 5;</code>
+     */
+    @java.lang.Override
+    public int getMemoryDumpCount() {
+      return memoryDump_.size();
+    }
+    /**
+     * <code>repeated .MemoryDump memory_dump = 5;</code>
+     */
+    @java.lang.Override
+    public com.android.server.os.LinphoneTombstoneProtos.MemoryDump getMemoryDump(int index) {
+      return memoryDump_.get(index);
+    }
+    /**
+     * <code>repeated .MemoryDump memory_dump = 5;</code>
+     */
+    public com.android.server.os.LinphoneTombstoneProtos.MemoryDumpOrBuilder getMemoryDumpOrBuilder(
+        int index) {
+      return memoryDump_.get(index);
+    }
+    private void ensureMemoryDumpIsMutable() {
+      com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.MemoryDump> tmp = memoryDump_;
+      if (!tmp.isModifiable()) {
+        memoryDump_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
+       }
+    }
+
+    /**
+     * <code>repeated .MemoryDump memory_dump = 5;</code>
+     */
+    private void setMemoryDump(
+        int index, com.android.server.os.LinphoneTombstoneProtos.MemoryDump value) {
+      value.getClass();
+  ensureMemoryDumpIsMutable();
+      memoryDump_.set(index, value);
+    }
+    /**
+     * <code>repeated .MemoryDump memory_dump = 5;</code>
+     */
+    private void addMemoryDump(com.android.server.os.LinphoneTombstoneProtos.MemoryDump value) {
+      value.getClass();
+  ensureMemoryDumpIsMutable();
+      memoryDump_.add(value);
+    }
+    /**
+     * <code>repeated .MemoryDump memory_dump = 5;</code>
+     */
+    private void addMemoryDump(
+        int index, com.android.server.os.LinphoneTombstoneProtos.MemoryDump value) {
+      value.getClass();
+  ensureMemoryDumpIsMutable();
+      memoryDump_.add(index, value);
+    }
+    /**
+     * <code>repeated .MemoryDump memory_dump = 5;</code>
+     */
+    private void addAllMemoryDump(
+        java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.MemoryDump> values) {
+      ensureMemoryDumpIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, memoryDump_);
+    }
+    /**
+     * <code>repeated .MemoryDump memory_dump = 5;</code>
+     */
+    private void clearMemoryDump() {
+      memoryDump_ = emptyProtobufList();
+    }
+    /**
+     * <code>repeated .MemoryDump memory_dump = 5;</code>
+     */
+    private void removeMemoryDump(int index) {
+      ensureMemoryDumpIsMutable();
+      memoryDump_.remove(index);
+    }
+
+    public static final int TAGGED_ADDR_CTRL_FIELD_NUMBER = 6;
+    private long taggedAddrCtrl_;
+    /**
+     * <code>int64 tagged_addr_ctrl = 6;</code>
+     * @return The taggedAddrCtrl.
+     */
+    @java.lang.Override
+    public long getTaggedAddrCtrl() {
+      return taggedAddrCtrl_;
+    }
+    /**
+     * <code>int64 tagged_addr_ctrl = 6;</code>
+     * @param value The taggedAddrCtrl to set.
+     */
+    private void setTaggedAddrCtrl(long value) {
+      
+      taggedAddrCtrl_ = value;
+    }
+    /**
+     * <code>int64 tagged_addr_ctrl = 6;</code>
+     */
+    private void clearTaggedAddrCtrl() {
+      
+      taggedAddrCtrl_ = 0L;
+    }
+
+    public static final int PAC_ENABLED_KEYS_FIELD_NUMBER = 8;
+    private long pacEnabledKeys_;
+    /**
+     * <code>int64 pac_enabled_keys = 8;</code>
+     * @return The pacEnabledKeys.
+     */
+    @java.lang.Override
+    public long getPacEnabledKeys() {
+      return pacEnabledKeys_;
+    }
+    /**
+     * <code>int64 pac_enabled_keys = 8;</code>
+     * @param value The pacEnabledKeys to set.
+     */
+    private void setPacEnabledKeys(long value) {
+      
+      pacEnabledKeys_ = value;
+    }
+    /**
+     * <code>int64 pac_enabled_keys = 8;</code>
+     */
+    private void clearPacEnabledKeys() {
+      
+      pacEnabledKeys_ = 0L;
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.Thread parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Thread parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Thread parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Thread parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Thread parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Thread parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Thread parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Thread parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Thread parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Thread parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Thread parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.Thread parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return (Builder) DEFAULT_INSTANCE.createBuilder();
+    }
+    public static Builder newBuilder(com.android.server.os.LinphoneTombstoneProtos.Thread prototype) {
+      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
+    }
+
+    /**
+     * Protobuf type {@code Thread}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageLite.Builder<
+          com.android.server.os.LinphoneTombstoneProtos.Thread, Builder> implements
+        // @@protoc_insertion_point(builder_implements:Thread)
+        com.android.server.os.LinphoneTombstoneProtos.ThreadOrBuilder {
+      // Construct using com.android.server.os.LinphoneTombstoneProtos.Thread.newBuilder()
+      private Builder() {
+        super(DEFAULT_INSTANCE);
+      }
+
+
+      /**
+       * <code>int32 id = 1;</code>
+       * @return The id.
+       */
+      @java.lang.Override
+      public int getId() {
+        return instance.getId();
+      }
+      /**
+       * <code>int32 id = 1;</code>
+       * @param value The id to set.
+       * @return This builder for chaining.
+       */
+      public Builder setId(int value) {
+        copyOnWrite();
+        instance.setId(value);
+        return this;
+      }
+      /**
+       * <code>int32 id = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearId() {
+        copyOnWrite();
+        instance.clearId();
+        return this;
+      }
+
+      /**
+       * <code>string name = 2;</code>
+       * @return The name.
+       */
+      @java.lang.Override
+      public java.lang.String getName() {
+        return instance.getName();
+      }
+      /**
+       * <code>string name = 2;</code>
+       * @return The bytes for name.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        return instance.getNameBytes();
+      }
+      /**
+       * <code>string name = 2;</code>
+       * @param value The name to set.
+       * @return This builder for chaining.
+       */
+      public Builder setName(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setName(value);
+        return this;
+      }
+      /**
+       * <code>string name = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearName() {
+        copyOnWrite();
+        instance.clearName();
+        return this;
+      }
+      /**
+       * <code>string name = 2;</code>
+       * @param value The bytes for name to set.
+       * @return This builder for chaining.
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setNameBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>repeated .Register registers = 3;</code>
+       */
+      @java.lang.Override
+      public java.util.List<com.android.server.os.LinphoneTombstoneProtos.Register> getRegistersList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getRegistersList());
+      }
+      /**
+       * <code>repeated .Register registers = 3;</code>
+       */
+      @java.lang.Override
+      public int getRegistersCount() {
+        return instance.getRegistersCount();
+      }/**
+       * <code>repeated .Register registers = 3;</code>
+       */
+      @java.lang.Override
+      public com.android.server.os.LinphoneTombstoneProtos.Register getRegisters(int index) {
+        return instance.getRegisters(index);
+      }
+      /**
+       * <code>repeated .Register registers = 3;</code>
+       */
+      public Builder setRegisters(
+          int index, com.android.server.os.LinphoneTombstoneProtos.Register value) {
+        copyOnWrite();
+        instance.setRegisters(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .Register registers = 3;</code>
+       */
+      public Builder setRegisters(
+          int index, com.android.server.os.LinphoneTombstoneProtos.Register.Builder builderForValue) {
+        copyOnWrite();
+        instance.setRegisters(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .Register registers = 3;</code>
+       */
+      public Builder addRegisters(com.android.server.os.LinphoneTombstoneProtos.Register value) {
+        copyOnWrite();
+        instance.addRegisters(value);
+        return this;
+      }
+      /**
+       * <code>repeated .Register registers = 3;</code>
+       */
+      public Builder addRegisters(
+          int index, com.android.server.os.LinphoneTombstoneProtos.Register value) {
+        copyOnWrite();
+        instance.addRegisters(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .Register registers = 3;</code>
+       */
+      public Builder addRegisters(
+          com.android.server.os.LinphoneTombstoneProtos.Register.Builder builderForValue) {
+        copyOnWrite();
+        instance.addRegisters(builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .Register registers = 3;</code>
+       */
+      public Builder addRegisters(
+          int index, com.android.server.os.LinphoneTombstoneProtos.Register.Builder builderForValue) {
+        copyOnWrite();
+        instance.addRegisters(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .Register registers = 3;</code>
+       */
+      public Builder addAllRegisters(
+          java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.Register> values) {
+        copyOnWrite();
+        instance.addAllRegisters(values);
+        return this;
+      }
+      /**
+       * <code>repeated .Register registers = 3;</code>
+       */
+      public Builder clearRegisters() {
+        copyOnWrite();
+        instance.clearRegisters();
+        return this;
+      }
+      /**
+       * <code>repeated .Register registers = 3;</code>
+       */
+      public Builder removeRegisters(int index) {
+        copyOnWrite();
+        instance.removeRegisters(index);
+        return this;
+      }
+
+      /**
+       * <code>repeated string backtrace_note = 7;</code>
+       * @return A list containing the backtraceNote.
+       */
+      @java.lang.Override
+      public java.util.List<java.lang.String>
+          getBacktraceNoteList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getBacktraceNoteList());
+      }
+      /**
+       * <code>repeated string backtrace_note = 7;</code>
+       * @return The count of backtraceNote.
+       */
+      @java.lang.Override
+      public int getBacktraceNoteCount() {
+        return instance.getBacktraceNoteCount();
+      }
+      /**
+       * <code>repeated string backtrace_note = 7;</code>
+       * @param index The index of the element to return.
+       * @return The backtraceNote at the given index.
+       */
+      @java.lang.Override
+      public java.lang.String getBacktraceNote(int index) {
+        return instance.getBacktraceNote(index);
+      }
+      /**
+       * <code>repeated string backtrace_note = 7;</code>
+       * @param index The index of the value to return.
+       * @return The bytes of the backtraceNote at the given index.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getBacktraceNoteBytes(int index) {
+        return instance.getBacktraceNoteBytes(index);
+      }
+      /**
+       * <code>repeated string backtrace_note = 7;</code>
+       * @param index The index to set the value at.
+       * @param value The backtraceNote to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBacktraceNote(
+          int index, java.lang.String value) {
+        copyOnWrite();
+        instance.setBacktraceNote(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated string backtrace_note = 7;</code>
+       * @param value The backtraceNote to add.
+       * @return This builder for chaining.
+       */
+      public Builder addBacktraceNote(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.addBacktraceNote(value);
+        return this;
+      }
+      /**
+       * <code>repeated string backtrace_note = 7;</code>
+       * @param values The backtraceNote to add.
+       * @return This builder for chaining.
+       */
+      public Builder addAllBacktraceNote(
+          java.lang.Iterable<java.lang.String> values) {
+        copyOnWrite();
+        instance.addAllBacktraceNote(values);
+        return this;
+      }
+      /**
+       * <code>repeated string backtrace_note = 7;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearBacktraceNote() {
+        copyOnWrite();
+        instance.clearBacktraceNote();
+        return this;
+      }
+      /**
+       * <code>repeated string backtrace_note = 7;</code>
+       * @param value The bytes of the backtraceNote to add.
+       * @return This builder for chaining.
+       */
+      public Builder addBacktraceNoteBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.addBacktraceNoteBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>repeated string unreadable_elf_files = 9;</code>
+       * @return A list containing the unreadableElfFiles.
+       */
+      @java.lang.Override
+      public java.util.List<java.lang.String>
+          getUnreadableElfFilesList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getUnreadableElfFilesList());
+      }
+      /**
+       * <code>repeated string unreadable_elf_files = 9;</code>
+       * @return The count of unreadableElfFiles.
+       */
+      @java.lang.Override
+      public int getUnreadableElfFilesCount() {
+        return instance.getUnreadableElfFilesCount();
+      }
+      /**
+       * <code>repeated string unreadable_elf_files = 9;</code>
+       * @param index The index of the element to return.
+       * @return The unreadableElfFiles at the given index.
+       */
+      @java.lang.Override
+      public java.lang.String getUnreadableElfFiles(int index) {
+        return instance.getUnreadableElfFiles(index);
+      }
+      /**
+       * <code>repeated string unreadable_elf_files = 9;</code>
+       * @param index The index of the value to return.
+       * @return The bytes of the unreadableElfFiles at the given index.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getUnreadableElfFilesBytes(int index) {
+        return instance.getUnreadableElfFilesBytes(index);
+      }
+      /**
+       * <code>repeated string unreadable_elf_files = 9;</code>
+       * @param index The index to set the value at.
+       * @param value The unreadableElfFiles to set.
+       * @return This builder for chaining.
+       */
+      public Builder setUnreadableElfFiles(
+          int index, java.lang.String value) {
+        copyOnWrite();
+        instance.setUnreadableElfFiles(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated string unreadable_elf_files = 9;</code>
+       * @param value The unreadableElfFiles to add.
+       * @return This builder for chaining.
+       */
+      public Builder addUnreadableElfFiles(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.addUnreadableElfFiles(value);
+        return this;
+      }
+      /**
+       * <code>repeated string unreadable_elf_files = 9;</code>
+       * @param values The unreadableElfFiles to add.
+       * @return This builder for chaining.
+       */
+      public Builder addAllUnreadableElfFiles(
+          java.lang.Iterable<java.lang.String> values) {
+        copyOnWrite();
+        instance.addAllUnreadableElfFiles(values);
+        return this;
+      }
+      /**
+       * <code>repeated string unreadable_elf_files = 9;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearUnreadableElfFiles() {
+        copyOnWrite();
+        instance.clearUnreadableElfFiles();
+        return this;
+      }
+      /**
+       * <code>repeated string unreadable_elf_files = 9;</code>
+       * @param value The bytes of the unreadableElfFiles to add.
+       * @return This builder for chaining.
+       */
+      public Builder addUnreadableElfFilesBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.addUnreadableElfFilesBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+       */
+      @java.lang.Override
+      public java.util.List<com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> getCurrentBacktraceList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getCurrentBacktraceList());
+      }
+      /**
+       * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+       */
+      @java.lang.Override
+      public int getCurrentBacktraceCount() {
+        return instance.getCurrentBacktraceCount();
+      }/**
+       * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+       */
+      @java.lang.Override
+      public com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame getCurrentBacktrace(int index) {
+        return instance.getCurrentBacktrace(index);
+      }
+      /**
+       * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+       */
+      public Builder setCurrentBacktrace(
+          int index, com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame value) {
+        copyOnWrite();
+        instance.setCurrentBacktrace(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+       */
+      public Builder setCurrentBacktrace(
+          int index, com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame.Builder builderForValue) {
+        copyOnWrite();
+        instance.setCurrentBacktrace(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+       */
+      public Builder addCurrentBacktrace(com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame value) {
+        copyOnWrite();
+        instance.addCurrentBacktrace(value);
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+       */
+      public Builder addCurrentBacktrace(
+          int index, com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame value) {
+        copyOnWrite();
+        instance.addCurrentBacktrace(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+       */
+      public Builder addCurrentBacktrace(
+          com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame.Builder builderForValue) {
+        copyOnWrite();
+        instance.addCurrentBacktrace(builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+       */
+      public Builder addCurrentBacktrace(
+          int index, com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame.Builder builderForValue) {
+        copyOnWrite();
+        instance.addCurrentBacktrace(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+       */
+      public Builder addAllCurrentBacktrace(
+          java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> values) {
+        copyOnWrite();
+        instance.addAllCurrentBacktrace(values);
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+       */
+      public Builder clearCurrentBacktrace() {
+        copyOnWrite();
+        instance.clearCurrentBacktrace();
+        return this;
+      }
+      /**
+       * <code>repeated .BacktraceFrame current_backtrace = 4;</code>
+       */
+      public Builder removeCurrentBacktrace(int index) {
+        copyOnWrite();
+        instance.removeCurrentBacktrace(index);
+        return this;
+      }
+
+      /**
+       * <code>repeated .MemoryDump memory_dump = 5;</code>
+       */
+      @java.lang.Override
+      public java.util.List<com.android.server.os.LinphoneTombstoneProtos.MemoryDump> getMemoryDumpList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getMemoryDumpList());
+      }
+      /**
+       * <code>repeated .MemoryDump memory_dump = 5;</code>
+       */
+      @java.lang.Override
+      public int getMemoryDumpCount() {
+        return instance.getMemoryDumpCount();
+      }/**
+       * <code>repeated .MemoryDump memory_dump = 5;</code>
+       */
+      @java.lang.Override
+      public com.android.server.os.LinphoneTombstoneProtos.MemoryDump getMemoryDump(int index) {
+        return instance.getMemoryDump(index);
+      }
+      /**
+       * <code>repeated .MemoryDump memory_dump = 5;</code>
+       */
+      public Builder setMemoryDump(
+          int index, com.android.server.os.LinphoneTombstoneProtos.MemoryDump value) {
+        copyOnWrite();
+        instance.setMemoryDump(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .MemoryDump memory_dump = 5;</code>
+       */
+      public Builder setMemoryDump(
+          int index, com.android.server.os.LinphoneTombstoneProtos.MemoryDump.Builder builderForValue) {
+        copyOnWrite();
+        instance.setMemoryDump(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .MemoryDump memory_dump = 5;</code>
+       */
+      public Builder addMemoryDump(com.android.server.os.LinphoneTombstoneProtos.MemoryDump value) {
+        copyOnWrite();
+        instance.addMemoryDump(value);
+        return this;
+      }
+      /**
+       * <code>repeated .MemoryDump memory_dump = 5;</code>
+       */
+      public Builder addMemoryDump(
+          int index, com.android.server.os.LinphoneTombstoneProtos.MemoryDump value) {
+        copyOnWrite();
+        instance.addMemoryDump(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .MemoryDump memory_dump = 5;</code>
+       */
+      public Builder addMemoryDump(
+          com.android.server.os.LinphoneTombstoneProtos.MemoryDump.Builder builderForValue) {
+        copyOnWrite();
+        instance.addMemoryDump(builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .MemoryDump memory_dump = 5;</code>
+       */
+      public Builder addMemoryDump(
+          int index, com.android.server.os.LinphoneTombstoneProtos.MemoryDump.Builder builderForValue) {
+        copyOnWrite();
+        instance.addMemoryDump(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .MemoryDump memory_dump = 5;</code>
+       */
+      public Builder addAllMemoryDump(
+          java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.MemoryDump> values) {
+        copyOnWrite();
+        instance.addAllMemoryDump(values);
+        return this;
+      }
+      /**
+       * <code>repeated .MemoryDump memory_dump = 5;</code>
+       */
+      public Builder clearMemoryDump() {
+        copyOnWrite();
+        instance.clearMemoryDump();
+        return this;
+      }
+      /**
+       * <code>repeated .MemoryDump memory_dump = 5;</code>
+       */
+      public Builder removeMemoryDump(int index) {
+        copyOnWrite();
+        instance.removeMemoryDump(index);
+        return this;
+      }
+
+      /**
+       * <code>int64 tagged_addr_ctrl = 6;</code>
+       * @return The taggedAddrCtrl.
+       */
+      @java.lang.Override
+      public long getTaggedAddrCtrl() {
+        return instance.getTaggedAddrCtrl();
+      }
+      /**
+       * <code>int64 tagged_addr_ctrl = 6;</code>
+       * @param value The taggedAddrCtrl to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTaggedAddrCtrl(long value) {
+        copyOnWrite();
+        instance.setTaggedAddrCtrl(value);
+        return this;
+      }
+      /**
+       * <code>int64 tagged_addr_ctrl = 6;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearTaggedAddrCtrl() {
+        copyOnWrite();
+        instance.clearTaggedAddrCtrl();
+        return this;
+      }
+
+      /**
+       * <code>int64 pac_enabled_keys = 8;</code>
+       * @return The pacEnabledKeys.
+       */
+      @java.lang.Override
+      public long getPacEnabledKeys() {
+        return instance.getPacEnabledKeys();
+      }
+      /**
+       * <code>int64 pac_enabled_keys = 8;</code>
+       * @param value The pacEnabledKeys to set.
+       * @return This builder for chaining.
+       */
+      public Builder setPacEnabledKeys(long value) {
+        copyOnWrite();
+        instance.setPacEnabledKeys(value);
+        return this;
+      }
+      /**
+       * <code>int64 pac_enabled_keys = 8;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearPacEnabledKeys() {
+        copyOnWrite();
+        instance.clearPacEnabledKeys();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:Thread)
+    }
+    @java.lang.Override
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new com.android.server.os.LinphoneTombstoneProtos.Thread();
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case BUILD_MESSAGE_INFO: {
+            java.lang.Object[] objects = new java.lang.Object[] {
+              "id_",
+              "name_",
+              "registers_",
+              com.android.server.os.LinphoneTombstoneProtos.Register.class,
+              "currentBacktrace_",
+              com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame.class,
+              "memoryDump_",
+              com.android.server.os.LinphoneTombstoneProtos.MemoryDump.class,
+              "taggedAddrCtrl_",
+              "backtraceNote_",
+              "pacEnabledKeys_",
+              "unreadableElfFiles_",
+            };
+            java.lang.String info =
+                "\u0000\t\u0000\u0000\u0001\t\t\u0000\u0005\u0000\u0001\u0004\u0002\u0208\u0003\u001b" +
+                "\u0004\u001b\u0005\u001b\u0006\u0002\u0007\u021a\b\u0002\t\u021a";
+            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          com.google.protobuf.Parser<com.android.server.os.LinphoneTombstoneProtos.Thread> parser = PARSER;
+          if (parser == null) {
+            synchronized (com.android.server.os.LinphoneTombstoneProtos.Thread.class) {
+              parser = PARSER;
+              if (parser == null) {
+                parser =
+                    new DefaultInstanceBasedParser<com.android.server.os.LinphoneTombstoneProtos.Thread>(
+                        DEFAULT_INSTANCE);
+                PARSER = parser;
+              }
+            }
+          }
+          return parser;
+      }
+      case GET_MEMOIZED_IS_INITIALIZED: {
+        return (byte) 1;
+      }
+      case SET_MEMOIZED_IS_INITIALIZED: {
+        return null;
+      }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:Thread)
+    private static final com.android.server.os.LinphoneTombstoneProtos.Thread DEFAULT_INSTANCE;
+    static {
+      Thread defaultInstance = new Thread();
+      // New instances are implicitly immutable so no need to make
+      // immutable.
+      DEFAULT_INSTANCE = defaultInstance;
+      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
+        Thread.class, defaultInstance);
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.Thread getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<Thread> PARSER;
+
+    public static com.google.protobuf.Parser<Thread> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
+  }
+
+  public interface BacktraceFrameOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:BacktraceFrame)
+      com.google.protobuf.MessageLiteOrBuilder {
+
+    /**
+     * <code>uint64 rel_pc = 1;</code>
+     * @return The relPc.
+     */
+    long getRelPc();
+
+    /**
+     * <code>uint64 pc = 2;</code>
+     * @return The pc.
+     */
+    long getPc();
+
+    /**
+     * <code>uint64 sp = 3;</code>
+     * @return The sp.
+     */
+    long getSp();
+
+    /**
+     * <code>string function_name = 4;</code>
+     * @return The functionName.
+     */
+    java.lang.String getFunctionName();
+    /**
+     * <code>string function_name = 4;</code>
+     * @return The bytes for functionName.
+     */
+    com.google.protobuf.ByteString
+        getFunctionNameBytes();
+
+    /**
+     * <code>uint64 function_offset = 5;</code>
+     * @return The functionOffset.
+     */
+    long getFunctionOffset();
+
+    /**
+     * <code>string file_name = 6;</code>
+     * @return The fileName.
+     */
+    java.lang.String getFileName();
+    /**
+     * <code>string file_name = 6;</code>
+     * @return The bytes for fileName.
+     */
+    com.google.protobuf.ByteString
+        getFileNameBytes();
+
+    /**
+     * <code>uint64 file_map_offset = 7;</code>
+     * @return The fileMapOffset.
+     */
+    long getFileMapOffset();
+
+    /**
+     * <code>string build_id = 8;</code>
+     * @return The buildId.
+     */
+    java.lang.String getBuildId();
+    /**
+     * <code>string build_id = 8;</code>
+     * @return The bytes for buildId.
+     */
+    com.google.protobuf.ByteString
+        getBuildIdBytes();
+  }
+  /**
+   * Protobuf type {@code BacktraceFrame}
+   */
+  public  static final class BacktraceFrame extends
+      com.google.protobuf.GeneratedMessageLite<
+          BacktraceFrame, BacktraceFrame.Builder> implements
+      // @@protoc_insertion_point(message_implements:BacktraceFrame)
+      BacktraceFrameOrBuilder {
+    private BacktraceFrame() {
+      functionName_ = "";
+      fileName_ = "";
+      buildId_ = "";
+    }
+    public static final int REL_PC_FIELD_NUMBER = 1;
+    private long relPc_;
+    /**
+     * <code>uint64 rel_pc = 1;</code>
+     * @return The relPc.
+     */
+    @java.lang.Override
+    public long getRelPc() {
+      return relPc_;
+    }
+    /**
+     * <code>uint64 rel_pc = 1;</code>
+     * @param value The relPc to set.
+     */
+    private void setRelPc(long value) {
+      
+      relPc_ = value;
+    }
+    /**
+     * <code>uint64 rel_pc = 1;</code>
+     */
+    private void clearRelPc() {
+      
+      relPc_ = 0L;
+    }
+
+    public static final int PC_FIELD_NUMBER = 2;
+    private long pc_;
+    /**
+     * <code>uint64 pc = 2;</code>
+     * @return The pc.
+     */
+    @java.lang.Override
+    public long getPc() {
+      return pc_;
+    }
+    /**
+     * <code>uint64 pc = 2;</code>
+     * @param value The pc to set.
+     */
+    private void setPc(long value) {
+      
+      pc_ = value;
+    }
+    /**
+     * <code>uint64 pc = 2;</code>
+     */
+    private void clearPc() {
+      
+      pc_ = 0L;
+    }
+
+    public static final int SP_FIELD_NUMBER = 3;
+    private long sp_;
+    /**
+     * <code>uint64 sp = 3;</code>
+     * @return The sp.
+     */
+    @java.lang.Override
+    public long getSp() {
+      return sp_;
+    }
+    /**
+     * <code>uint64 sp = 3;</code>
+     * @param value The sp to set.
+     */
+    private void setSp(long value) {
+      
+      sp_ = value;
+    }
+    /**
+     * <code>uint64 sp = 3;</code>
+     */
+    private void clearSp() {
+      
+      sp_ = 0L;
+    }
+
+    public static final int FUNCTION_NAME_FIELD_NUMBER = 4;
+    private java.lang.String functionName_;
+    /**
+     * <code>string function_name = 4;</code>
+     * @return The functionName.
+     */
+    @java.lang.Override
+    public java.lang.String getFunctionName() {
+      return functionName_;
+    }
+    /**
+     * <code>string function_name = 4;</code>
+     * @return The bytes for functionName.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getFunctionNameBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(functionName_);
+    }
+    /**
+     * <code>string function_name = 4;</code>
+     * @param value The functionName to set.
+     */
+    private void setFunctionName(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      functionName_ = value;
+    }
+    /**
+     * <code>string function_name = 4;</code>
+     */
+    private void clearFunctionName() {
+      
+      functionName_ = getDefaultInstance().getFunctionName();
+    }
+    /**
+     * <code>string function_name = 4;</code>
+     * @param value The bytes for functionName to set.
+     */
+    private void setFunctionNameBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      functionName_ = value.toStringUtf8();
+      
+    }
+
+    public static final int FUNCTION_OFFSET_FIELD_NUMBER = 5;
+    private long functionOffset_;
+    /**
+     * <code>uint64 function_offset = 5;</code>
+     * @return The functionOffset.
+     */
+    @java.lang.Override
+    public long getFunctionOffset() {
+      return functionOffset_;
+    }
+    /**
+     * <code>uint64 function_offset = 5;</code>
+     * @param value The functionOffset to set.
+     */
+    private void setFunctionOffset(long value) {
+      
+      functionOffset_ = value;
+    }
+    /**
+     * <code>uint64 function_offset = 5;</code>
+     */
+    private void clearFunctionOffset() {
+      
+      functionOffset_ = 0L;
+    }
+
+    public static final int FILE_NAME_FIELD_NUMBER = 6;
+    private java.lang.String fileName_;
+    /**
+     * <code>string file_name = 6;</code>
+     * @return The fileName.
+     */
+    @java.lang.Override
+    public java.lang.String getFileName() {
+      return fileName_;
+    }
+    /**
+     * <code>string file_name = 6;</code>
+     * @return The bytes for fileName.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getFileNameBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(fileName_);
+    }
+    /**
+     * <code>string file_name = 6;</code>
+     * @param value The fileName to set.
+     */
+    private void setFileName(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      fileName_ = value;
+    }
+    /**
+     * <code>string file_name = 6;</code>
+     */
+    private void clearFileName() {
+      
+      fileName_ = getDefaultInstance().getFileName();
+    }
+    /**
+     * <code>string file_name = 6;</code>
+     * @param value The bytes for fileName to set.
+     */
+    private void setFileNameBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      fileName_ = value.toStringUtf8();
+      
+    }
+
+    public static final int FILE_MAP_OFFSET_FIELD_NUMBER = 7;
+    private long fileMapOffset_;
+    /**
+     * <code>uint64 file_map_offset = 7;</code>
+     * @return The fileMapOffset.
+     */
+    @java.lang.Override
+    public long getFileMapOffset() {
+      return fileMapOffset_;
+    }
+    /**
+     * <code>uint64 file_map_offset = 7;</code>
+     * @param value The fileMapOffset to set.
+     */
+    private void setFileMapOffset(long value) {
+      
+      fileMapOffset_ = value;
+    }
+    /**
+     * <code>uint64 file_map_offset = 7;</code>
+     */
+    private void clearFileMapOffset() {
+      
+      fileMapOffset_ = 0L;
+    }
+
+    public static final int BUILD_ID_FIELD_NUMBER = 8;
+    private java.lang.String buildId_;
+    /**
+     * <code>string build_id = 8;</code>
+     * @return The buildId.
+     */
+    @java.lang.Override
+    public java.lang.String getBuildId() {
+      return buildId_;
+    }
+    /**
+     * <code>string build_id = 8;</code>
+     * @return The bytes for buildId.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getBuildIdBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(buildId_);
+    }
+    /**
+     * <code>string build_id = 8;</code>
+     * @param value The buildId to set.
+     */
+    private void setBuildId(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      buildId_ = value;
+    }
+    /**
+     * <code>string build_id = 8;</code>
+     */
+    private void clearBuildId() {
+      
+      buildId_ = getDefaultInstance().getBuildId();
+    }
+    /**
+     * <code>string build_id = 8;</code>
+     * @param value The bytes for buildId to set.
+     */
+    private void setBuildIdBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      buildId_ = value.toStringUtf8();
+      
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return (Builder) DEFAULT_INSTANCE.createBuilder();
+    }
+    public static Builder newBuilder(com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame prototype) {
+      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
+    }
+
+    /**
+     * Protobuf type {@code BacktraceFrame}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageLite.Builder<
+          com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame, Builder> implements
+        // @@protoc_insertion_point(builder_implements:BacktraceFrame)
+        com.android.server.os.LinphoneTombstoneProtos.BacktraceFrameOrBuilder {
+      // Construct using com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame.newBuilder()
+      private Builder() {
+        super(DEFAULT_INSTANCE);
+      }
+
+
+      /**
+       * <code>uint64 rel_pc = 1;</code>
+       * @return The relPc.
+       */
+      @java.lang.Override
+      public long getRelPc() {
+        return instance.getRelPc();
+      }
+      /**
+       * <code>uint64 rel_pc = 1;</code>
+       * @param value The relPc to set.
+       * @return This builder for chaining.
+       */
+      public Builder setRelPc(long value) {
+        copyOnWrite();
+        instance.setRelPc(value);
+        return this;
+      }
+      /**
+       * <code>uint64 rel_pc = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearRelPc() {
+        copyOnWrite();
+        instance.clearRelPc();
+        return this;
+      }
+
+      /**
+       * <code>uint64 pc = 2;</code>
+       * @return The pc.
+       */
+      @java.lang.Override
+      public long getPc() {
+        return instance.getPc();
+      }
+      /**
+       * <code>uint64 pc = 2;</code>
+       * @param value The pc to set.
+       * @return This builder for chaining.
+       */
+      public Builder setPc(long value) {
+        copyOnWrite();
+        instance.setPc(value);
+        return this;
+      }
+      /**
+       * <code>uint64 pc = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearPc() {
+        copyOnWrite();
+        instance.clearPc();
+        return this;
+      }
+
+      /**
+       * <code>uint64 sp = 3;</code>
+       * @return The sp.
+       */
+      @java.lang.Override
+      public long getSp() {
+        return instance.getSp();
+      }
+      /**
+       * <code>uint64 sp = 3;</code>
+       * @param value The sp to set.
+       * @return This builder for chaining.
+       */
+      public Builder setSp(long value) {
+        copyOnWrite();
+        instance.setSp(value);
+        return this;
+      }
+      /**
+       * <code>uint64 sp = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearSp() {
+        copyOnWrite();
+        instance.clearSp();
+        return this;
+      }
+
+      /**
+       * <code>string function_name = 4;</code>
+       * @return The functionName.
+       */
+      @java.lang.Override
+      public java.lang.String getFunctionName() {
+        return instance.getFunctionName();
+      }
+      /**
+       * <code>string function_name = 4;</code>
+       * @return The bytes for functionName.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getFunctionNameBytes() {
+        return instance.getFunctionNameBytes();
+      }
+      /**
+       * <code>string function_name = 4;</code>
+       * @param value The functionName to set.
+       * @return This builder for chaining.
+       */
+      public Builder setFunctionName(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setFunctionName(value);
+        return this;
+      }
+      /**
+       * <code>string function_name = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearFunctionName() {
+        copyOnWrite();
+        instance.clearFunctionName();
+        return this;
+      }
+      /**
+       * <code>string function_name = 4;</code>
+       * @param value The bytes for functionName to set.
+       * @return This builder for chaining.
+       */
+      public Builder setFunctionNameBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setFunctionNameBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>uint64 function_offset = 5;</code>
+       * @return The functionOffset.
+       */
+      @java.lang.Override
+      public long getFunctionOffset() {
+        return instance.getFunctionOffset();
+      }
+      /**
+       * <code>uint64 function_offset = 5;</code>
+       * @param value The functionOffset to set.
+       * @return This builder for chaining.
+       */
+      public Builder setFunctionOffset(long value) {
+        copyOnWrite();
+        instance.setFunctionOffset(value);
+        return this;
+      }
+      /**
+       * <code>uint64 function_offset = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearFunctionOffset() {
+        copyOnWrite();
+        instance.clearFunctionOffset();
+        return this;
+      }
+
+      /**
+       * <code>string file_name = 6;</code>
+       * @return The fileName.
+       */
+      @java.lang.Override
+      public java.lang.String getFileName() {
+        return instance.getFileName();
+      }
+      /**
+       * <code>string file_name = 6;</code>
+       * @return The bytes for fileName.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getFileNameBytes() {
+        return instance.getFileNameBytes();
+      }
+      /**
+       * <code>string file_name = 6;</code>
+       * @param value The fileName to set.
+       * @return This builder for chaining.
+       */
+      public Builder setFileName(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setFileName(value);
+        return this;
+      }
+      /**
+       * <code>string file_name = 6;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearFileName() {
+        copyOnWrite();
+        instance.clearFileName();
+        return this;
+      }
+      /**
+       * <code>string file_name = 6;</code>
+       * @param value The bytes for fileName to set.
+       * @return This builder for chaining.
+       */
+      public Builder setFileNameBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setFileNameBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>uint64 file_map_offset = 7;</code>
+       * @return The fileMapOffset.
+       */
+      @java.lang.Override
+      public long getFileMapOffset() {
+        return instance.getFileMapOffset();
+      }
+      /**
+       * <code>uint64 file_map_offset = 7;</code>
+       * @param value The fileMapOffset to set.
+       * @return This builder for chaining.
+       */
+      public Builder setFileMapOffset(long value) {
+        copyOnWrite();
+        instance.setFileMapOffset(value);
+        return this;
+      }
+      /**
+       * <code>uint64 file_map_offset = 7;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearFileMapOffset() {
+        copyOnWrite();
+        instance.clearFileMapOffset();
+        return this;
+      }
+
+      /**
+       * <code>string build_id = 8;</code>
+       * @return The buildId.
+       */
+      @java.lang.Override
+      public java.lang.String getBuildId() {
+        return instance.getBuildId();
+      }
+      /**
+       * <code>string build_id = 8;</code>
+       * @return The bytes for buildId.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getBuildIdBytes() {
+        return instance.getBuildIdBytes();
+      }
+      /**
+       * <code>string build_id = 8;</code>
+       * @param value The buildId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBuildId(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setBuildId(value);
+        return this;
+      }
+      /**
+       * <code>string build_id = 8;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearBuildId() {
+        copyOnWrite();
+        instance.clearBuildId();
+        return this;
+      }
+      /**
+       * <code>string build_id = 8;</code>
+       * @param value The bytes for buildId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBuildIdBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setBuildIdBytes(value);
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:BacktraceFrame)
+    }
+    @java.lang.Override
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame();
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case BUILD_MESSAGE_INFO: {
+            java.lang.Object[] objects = new java.lang.Object[] {
+              "relPc_",
+              "pc_",
+              "sp_",
+              "functionName_",
+              "functionOffset_",
+              "fileName_",
+              "fileMapOffset_",
+              "buildId_",
+            };
+            java.lang.String info =
+                "\u0000\b\u0000\u0000\u0001\b\b\u0000\u0000\u0000\u0001\u0003\u0002\u0003\u0003\u0003" +
+                "\u0004\u0208\u0005\u0003\u0006\u0208\u0007\u0003\b\u0208";
+            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          com.google.protobuf.Parser<com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame> parser = PARSER;
+          if (parser == null) {
+            synchronized (com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame.class) {
+              parser = PARSER;
+              if (parser == null) {
+                parser =
+                    new DefaultInstanceBasedParser<com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame>(
+                        DEFAULT_INSTANCE);
+                PARSER = parser;
+              }
+            }
+          }
+          return parser;
+      }
+      case GET_MEMOIZED_IS_INITIALIZED: {
+        return (byte) 1;
+      }
+      case SET_MEMOIZED_IS_INITIALIZED: {
+        return null;
+      }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:BacktraceFrame)
+    private static final com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame DEFAULT_INSTANCE;
+    static {
+      BacktraceFrame defaultInstance = new BacktraceFrame();
+      // New instances are implicitly immutable so no need to make
+      // immutable.
+      DEFAULT_INSTANCE = defaultInstance;
+      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
+        BacktraceFrame.class, defaultInstance);
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.BacktraceFrame getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<BacktraceFrame> PARSER;
+
+    public static com.google.protobuf.Parser<BacktraceFrame> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
+  }
+
+  public interface ArmMTEMetadataOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:ArmMTEMetadata)
+      com.google.protobuf.MessageLiteOrBuilder {
+
+    /**
+     * <pre>
+     * One memory tag per granule (e.g. every 16 bytes) of regular memory.
+     * </pre>
+     *
+     * <code>bytes memory_tags = 1;</code>
+     * @return The memoryTags.
+     */
+    com.google.protobuf.ByteString getMemoryTags();
+  }
+  /**
+   * Protobuf type {@code ArmMTEMetadata}
+   */
+  public  static final class ArmMTEMetadata extends
+      com.google.protobuf.GeneratedMessageLite<
+          ArmMTEMetadata, ArmMTEMetadata.Builder> implements
+      // @@protoc_insertion_point(message_implements:ArmMTEMetadata)
+      ArmMTEMetadataOrBuilder {
+    private ArmMTEMetadata() {
+      memoryTags_ = com.google.protobuf.ByteString.EMPTY;
+    }
+    public static final int MEMORY_TAGS_FIELD_NUMBER = 1;
+    private com.google.protobuf.ByteString memoryTags_;
+    /**
+     * <pre>
+     * One memory tag per granule (e.g. every 16 bytes) of regular memory.
+     * </pre>
+     *
+     * <code>bytes memory_tags = 1;</code>
+     * @return The memoryTags.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString getMemoryTags() {
+      return memoryTags_;
+    }
+    /**
+     * <pre>
+     * One memory tag per granule (e.g. every 16 bytes) of regular memory.
+     * </pre>
+     *
+     * <code>bytes memory_tags = 1;</code>
+     * @param value The memoryTags to set.
+     */
+    private void setMemoryTags(com.google.protobuf.ByteString value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      memoryTags_ = value;
+    }
+    /**
+     * <pre>
+     * One memory tag per granule (e.g. every 16 bytes) of regular memory.
+     * </pre>
+     *
+     * <code>bytes memory_tags = 1;</code>
+     */
+    private void clearMemoryTags() {
+      
+      memoryTags_ = getDefaultInstance().getMemoryTags();
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return (Builder) DEFAULT_INSTANCE.createBuilder();
+    }
+    public static Builder newBuilder(com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata prototype) {
+      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
+    }
+
+    /**
+     * Protobuf type {@code ArmMTEMetadata}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageLite.Builder<
+          com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata, Builder> implements
+        // @@protoc_insertion_point(builder_implements:ArmMTEMetadata)
+        com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadataOrBuilder {
+      // Construct using com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata.newBuilder()
+      private Builder() {
+        super(DEFAULT_INSTANCE);
+      }
+
+
+      /**
+       * <pre>
+       * One memory tag per granule (e.g. every 16 bytes) of regular memory.
+       * </pre>
+       *
+       * <code>bytes memory_tags = 1;</code>
+       * @return The memoryTags.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString getMemoryTags() {
+        return instance.getMemoryTags();
+      }
+      /**
+       * <pre>
+       * One memory tag per granule (e.g. every 16 bytes) of regular memory.
+       * </pre>
+       *
+       * <code>bytes memory_tags = 1;</code>
+       * @param value The memoryTags to set.
+       * @return This builder for chaining.
+       */
+      public Builder setMemoryTags(com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setMemoryTags(value);
+        return this;
+      }
+      /**
+       * <pre>
+       * One memory tag per granule (e.g. every 16 bytes) of regular memory.
+       * </pre>
+       *
+       * <code>bytes memory_tags = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearMemoryTags() {
+        copyOnWrite();
+        instance.clearMemoryTags();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:ArmMTEMetadata)
+    }
+    @java.lang.Override
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata();
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case BUILD_MESSAGE_INFO: {
+            java.lang.Object[] objects = new java.lang.Object[] {
+              "memoryTags_",
+            };
+            java.lang.String info =
+                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\n";
+            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          com.google.protobuf.Parser<com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata> parser = PARSER;
+          if (parser == null) {
+            synchronized (com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata.class) {
+              parser = PARSER;
+              if (parser == null) {
+                parser =
+                    new DefaultInstanceBasedParser<com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata>(
+                        DEFAULT_INSTANCE);
+                PARSER = parser;
+              }
+            }
+          }
+          return parser;
+      }
+      case GET_MEMOIZED_IS_INITIALIZED: {
+        return (byte) 1;
+      }
+      case SET_MEMOIZED_IS_INITIALIZED: {
+        return null;
+      }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:ArmMTEMetadata)
+    private static final com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata DEFAULT_INSTANCE;
+    static {
+      ArmMTEMetadata defaultInstance = new ArmMTEMetadata();
+      // New instances are implicitly immutable so no need to make
+      // immutable.
+      DEFAULT_INSTANCE = defaultInstance;
+      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
+        ArmMTEMetadata.class, defaultInstance);
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<ArmMTEMetadata> PARSER;
+
+    public static com.google.protobuf.Parser<ArmMTEMetadata> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
+  }
+
+  public interface MemoryDumpOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:MemoryDump)
+      com.google.protobuf.MessageLiteOrBuilder {
+
+    /**
+     * <code>string register_name = 1;</code>
+     * @return The registerName.
+     */
+    java.lang.String getRegisterName();
+    /**
+     * <code>string register_name = 1;</code>
+     * @return The bytes for registerName.
+     */
+    com.google.protobuf.ByteString
+        getRegisterNameBytes();
+
+    /**
+     * <code>string mapping_name = 2;</code>
+     * @return The mappingName.
+     */
+    java.lang.String getMappingName();
+    /**
+     * <code>string mapping_name = 2;</code>
+     * @return The bytes for mappingName.
+     */
+    com.google.protobuf.ByteString
+        getMappingNameBytes();
+
+    /**
+     * <code>uint64 begin_address = 3;</code>
+     * @return The beginAddress.
+     */
+    long getBeginAddress();
+
+    /**
+     * <code>bytes memory = 4;</code>
+     * @return The memory.
+     */
+    com.google.protobuf.ByteString getMemory();
+
+    /**
+     * <code>.ArmMTEMetadata arm_mte_metadata = 6;</code>
+     * @return Whether the armMteMetadata field is set.
+     */
+    boolean hasArmMteMetadata();
+    /**
+     * <code>.ArmMTEMetadata arm_mte_metadata = 6;</code>
+     * @return The armMteMetadata.
+     */
+    com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata getArmMteMetadata();
+
+    public com.android.server.os.LinphoneTombstoneProtos.MemoryDump.MetadataCase getMetadataCase();
+  }
+  /**
+   * Protobuf type {@code MemoryDump}
+   */
+  public  static final class MemoryDump extends
+      com.google.protobuf.GeneratedMessageLite<
+          MemoryDump, MemoryDump.Builder> implements
+      // @@protoc_insertion_point(message_implements:MemoryDump)
+      MemoryDumpOrBuilder {
+    private MemoryDump() {
+      registerName_ = "";
+      mappingName_ = "";
+      memory_ = com.google.protobuf.ByteString.EMPTY;
+    }
+    private int metadataCase_ = 0;
+    private java.lang.Object metadata_;
+    public enum MetadataCase {
+      ARM_MTE_METADATA(6),
+      METADATA_NOT_SET(0);
+      private final int value;
+      private MetadataCase(int value) {
+        this.value = value;
+      }
+      /**
+       * @deprecated Use {@link #forNumber(int)} instead.
+       */
+      @java.lang.Deprecated
+      public static MetadataCase valueOf(int value) {
+        return forNumber(value);
+      }
+
+      public static MetadataCase forNumber(int value) {
+        switch (value) {
+          case 6: return ARM_MTE_METADATA;
+          case 0: return METADATA_NOT_SET;
+          default: return null;
+        }
+      }
+      public int getNumber() {
+        return this.value;
+      }
+    };
+
+    @java.lang.Override
+    public MetadataCase
+    getMetadataCase() {
+      return MetadataCase.forNumber(
+          metadataCase_);
+    }
+
+    private void clearMetadata() {
+      metadataCase_ = 0;
+      metadata_ = null;
+    }
+
+    public static final int REGISTER_NAME_FIELD_NUMBER = 1;
+    private java.lang.String registerName_;
+    /**
+     * <code>string register_name = 1;</code>
+     * @return The registerName.
+     */
+    @java.lang.Override
+    public java.lang.String getRegisterName() {
+      return registerName_;
+    }
+    /**
+     * <code>string register_name = 1;</code>
+     * @return The bytes for registerName.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getRegisterNameBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(registerName_);
+    }
+    /**
+     * <code>string register_name = 1;</code>
+     * @param value The registerName to set.
+     */
+    private void setRegisterName(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      registerName_ = value;
+    }
+    /**
+     * <code>string register_name = 1;</code>
+     */
+    private void clearRegisterName() {
+      
+      registerName_ = getDefaultInstance().getRegisterName();
+    }
+    /**
+     * <code>string register_name = 1;</code>
+     * @param value The bytes for registerName to set.
+     */
+    private void setRegisterNameBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      registerName_ = value.toStringUtf8();
+      
+    }
+
+    public static final int MAPPING_NAME_FIELD_NUMBER = 2;
+    private java.lang.String mappingName_;
+    /**
+     * <code>string mapping_name = 2;</code>
+     * @return The mappingName.
+     */
+    @java.lang.Override
+    public java.lang.String getMappingName() {
+      return mappingName_;
+    }
+    /**
+     * <code>string mapping_name = 2;</code>
+     * @return The bytes for mappingName.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getMappingNameBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(mappingName_);
+    }
+    /**
+     * <code>string mapping_name = 2;</code>
+     * @param value The mappingName to set.
+     */
+    private void setMappingName(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      mappingName_ = value;
+    }
+    /**
+     * <code>string mapping_name = 2;</code>
+     */
+    private void clearMappingName() {
+      
+      mappingName_ = getDefaultInstance().getMappingName();
+    }
+    /**
+     * <code>string mapping_name = 2;</code>
+     * @param value The bytes for mappingName to set.
+     */
+    private void setMappingNameBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      mappingName_ = value.toStringUtf8();
+      
+    }
+
+    public static final int BEGIN_ADDRESS_FIELD_NUMBER = 3;
+    private long beginAddress_;
+    /**
+     * <code>uint64 begin_address = 3;</code>
+     * @return The beginAddress.
+     */
+    @java.lang.Override
+    public long getBeginAddress() {
+      return beginAddress_;
+    }
+    /**
+     * <code>uint64 begin_address = 3;</code>
+     * @param value The beginAddress to set.
+     */
+    private void setBeginAddress(long value) {
+      
+      beginAddress_ = value;
+    }
+    /**
+     * <code>uint64 begin_address = 3;</code>
+     */
+    private void clearBeginAddress() {
+      
+      beginAddress_ = 0L;
+    }
+
+    public static final int MEMORY_FIELD_NUMBER = 4;
+    private com.google.protobuf.ByteString memory_;
+    /**
+     * <code>bytes memory = 4;</code>
+     * @return The memory.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString getMemory() {
+      return memory_;
+    }
+    /**
+     * <code>bytes memory = 4;</code>
+     * @param value The memory to set.
+     */
+    private void setMemory(com.google.protobuf.ByteString value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      memory_ = value;
+    }
+    /**
+     * <code>bytes memory = 4;</code>
+     */
+    private void clearMemory() {
+      
+      memory_ = getDefaultInstance().getMemory();
+    }
+
+    public static final int ARM_MTE_METADATA_FIELD_NUMBER = 6;
+    /**
+     * <code>.ArmMTEMetadata arm_mte_metadata = 6;</code>
+     */
+    @java.lang.Override
+    public boolean hasArmMteMetadata() {
+      return metadataCase_ == 6;
+    }
+    /**
+     * <code>.ArmMTEMetadata arm_mte_metadata = 6;</code>
+     */
+    @java.lang.Override
+    public com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata getArmMteMetadata() {
+      if (metadataCase_ == 6) {
+         return (com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata) metadata_;
+      }
+      return com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata.getDefaultInstance();
+    }
+    /**
+     * <code>.ArmMTEMetadata arm_mte_metadata = 6;</code>
+     */
+    private void setArmMteMetadata(com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata value) {
+      value.getClass();
+  metadata_ = value;
+      metadataCase_ = 6;
+    }
+    /**
+     * <code>.ArmMTEMetadata arm_mte_metadata = 6;</code>
+     */
+    private void mergeArmMteMetadata(com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata value) {
+      value.getClass();
+  if (metadataCase_ == 6 &&
+          metadata_ != com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata.getDefaultInstance()) {
+        metadata_ = com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata.newBuilder((com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata) metadata_)
+            .mergeFrom(value).buildPartial();
+      } else {
+        metadata_ = value;
+      }
+      metadataCase_ = 6;
+    }
+    /**
+     * <code>.ArmMTEMetadata arm_mte_metadata = 6;</code>
+     */
+    private void clearArmMteMetadata() {
+      if (metadataCase_ == 6) {
+        metadataCase_ = 0;
+        metadata_ = null;
+      }
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryDump parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryDump parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryDump parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryDump parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryDump parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryDump parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryDump parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryDump parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryDump parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryDump parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryDump parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryDump parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return (Builder) DEFAULT_INSTANCE.createBuilder();
+    }
+    public static Builder newBuilder(com.android.server.os.LinphoneTombstoneProtos.MemoryDump prototype) {
+      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
+    }
+
+    /**
+     * Protobuf type {@code MemoryDump}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageLite.Builder<
+          com.android.server.os.LinphoneTombstoneProtos.MemoryDump, Builder> implements
+        // @@protoc_insertion_point(builder_implements:MemoryDump)
+        com.android.server.os.LinphoneTombstoneProtos.MemoryDumpOrBuilder {
+      // Construct using com.android.server.os.LinphoneTombstoneProtos.MemoryDump.newBuilder()
+      private Builder() {
+        super(DEFAULT_INSTANCE);
+      }
+
+      @java.lang.Override
+      public MetadataCase
+          getMetadataCase() {
+        return instance.getMetadataCase();
+      }
+
+      public Builder clearMetadata() {
+        copyOnWrite();
+        instance.clearMetadata();
+        return this;
+      }
+
+
+      /**
+       * <code>string register_name = 1;</code>
+       * @return The registerName.
+       */
+      @java.lang.Override
+      public java.lang.String getRegisterName() {
+        return instance.getRegisterName();
+      }
+      /**
+       * <code>string register_name = 1;</code>
+       * @return The bytes for registerName.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getRegisterNameBytes() {
+        return instance.getRegisterNameBytes();
+      }
+      /**
+       * <code>string register_name = 1;</code>
+       * @param value The registerName to set.
+       * @return This builder for chaining.
+       */
+      public Builder setRegisterName(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setRegisterName(value);
+        return this;
+      }
+      /**
+       * <code>string register_name = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearRegisterName() {
+        copyOnWrite();
+        instance.clearRegisterName();
+        return this;
+      }
+      /**
+       * <code>string register_name = 1;</code>
+       * @param value The bytes for registerName to set.
+       * @return This builder for chaining.
+       */
+      public Builder setRegisterNameBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setRegisterNameBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>string mapping_name = 2;</code>
+       * @return The mappingName.
+       */
+      @java.lang.Override
+      public java.lang.String getMappingName() {
+        return instance.getMappingName();
+      }
+      /**
+       * <code>string mapping_name = 2;</code>
+       * @return The bytes for mappingName.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getMappingNameBytes() {
+        return instance.getMappingNameBytes();
+      }
+      /**
+       * <code>string mapping_name = 2;</code>
+       * @param value The mappingName to set.
+       * @return This builder for chaining.
+       */
+      public Builder setMappingName(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setMappingName(value);
+        return this;
+      }
+      /**
+       * <code>string mapping_name = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearMappingName() {
+        copyOnWrite();
+        instance.clearMappingName();
+        return this;
+      }
+      /**
+       * <code>string mapping_name = 2;</code>
+       * @param value The bytes for mappingName to set.
+       * @return This builder for chaining.
+       */
+      public Builder setMappingNameBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setMappingNameBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>uint64 begin_address = 3;</code>
+       * @return The beginAddress.
+       */
+      @java.lang.Override
+      public long getBeginAddress() {
+        return instance.getBeginAddress();
+      }
+      /**
+       * <code>uint64 begin_address = 3;</code>
+       * @param value The beginAddress to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBeginAddress(long value) {
+        copyOnWrite();
+        instance.setBeginAddress(value);
+        return this;
+      }
+      /**
+       * <code>uint64 begin_address = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearBeginAddress() {
+        copyOnWrite();
+        instance.clearBeginAddress();
+        return this;
+      }
+
+      /**
+       * <code>bytes memory = 4;</code>
+       * @return The memory.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString getMemory() {
+        return instance.getMemory();
+      }
+      /**
+       * <code>bytes memory = 4;</code>
+       * @param value The memory to set.
+       * @return This builder for chaining.
+       */
+      public Builder setMemory(com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setMemory(value);
+        return this;
+      }
+      /**
+       * <code>bytes memory = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearMemory() {
+        copyOnWrite();
+        instance.clearMemory();
+        return this;
+      }
+
+      /**
+       * <code>.ArmMTEMetadata arm_mte_metadata = 6;</code>
+       */
+      @java.lang.Override
+      public boolean hasArmMteMetadata() {
+        return instance.hasArmMteMetadata();
+      }
+      /**
+       * <code>.ArmMTEMetadata arm_mte_metadata = 6;</code>
+       */
+      @java.lang.Override
+      public com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata getArmMteMetadata() {
+        return instance.getArmMteMetadata();
+      }
+      /**
+       * <code>.ArmMTEMetadata arm_mte_metadata = 6;</code>
+       */
+      public Builder setArmMteMetadata(com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata value) {
+        copyOnWrite();
+        instance.setArmMteMetadata(value);
+        return this;
+      }
+      /**
+       * <code>.ArmMTEMetadata arm_mte_metadata = 6;</code>
+       */
+      public Builder setArmMteMetadata(
+          com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata.Builder builderForValue) {
+        copyOnWrite();
+        instance.setArmMteMetadata(builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>.ArmMTEMetadata arm_mte_metadata = 6;</code>
+       */
+      public Builder mergeArmMteMetadata(com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata value) {
+        copyOnWrite();
+        instance.mergeArmMteMetadata(value);
+        return this;
+      }
+      /**
+       * <code>.ArmMTEMetadata arm_mte_metadata = 6;</code>
+       */
+      public Builder clearArmMteMetadata() {
+        copyOnWrite();
+        instance.clearArmMteMetadata();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:MemoryDump)
+    }
+    @java.lang.Override
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new com.android.server.os.LinphoneTombstoneProtos.MemoryDump();
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case BUILD_MESSAGE_INFO: {
+            java.lang.Object[] objects = new java.lang.Object[] {
+              "metadata_",
+              "metadataCase_",
+              "registerName_",
+              "mappingName_",
+              "beginAddress_",
+              "memory_",
+              com.android.server.os.LinphoneTombstoneProtos.ArmMTEMetadata.class,
+            };
+            java.lang.String info =
+                "\u0000\u0005\u0001\u0000\u0001\u0006\u0005\u0000\u0000\u0000\u0001\u0208\u0002\u0208" +
+                "\u0003\u0003\u0004\n\u0006<\u0000";
+            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          com.google.protobuf.Parser<com.android.server.os.LinphoneTombstoneProtos.MemoryDump> parser = PARSER;
+          if (parser == null) {
+            synchronized (com.android.server.os.LinphoneTombstoneProtos.MemoryDump.class) {
+              parser = PARSER;
+              if (parser == null) {
+                parser =
+                    new DefaultInstanceBasedParser<com.android.server.os.LinphoneTombstoneProtos.MemoryDump>(
+                        DEFAULT_INSTANCE);
+                PARSER = parser;
+              }
+            }
+          }
+          return parser;
+      }
+      case GET_MEMOIZED_IS_INITIALIZED: {
+        return (byte) 1;
+      }
+      case SET_MEMOIZED_IS_INITIALIZED: {
+        return null;
+      }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:MemoryDump)
+    private static final com.android.server.os.LinphoneTombstoneProtos.MemoryDump DEFAULT_INSTANCE;
+    static {
+      MemoryDump defaultInstance = new MemoryDump();
+      // New instances are implicitly immutable so no need to make
+      // immutable.
+      DEFAULT_INSTANCE = defaultInstance;
+      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
+        MemoryDump.class, defaultInstance);
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryDump getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<MemoryDump> PARSER;
+
+    public static com.google.protobuf.Parser<MemoryDump> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
+  }
+
+  public interface MemoryMappingOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:MemoryMapping)
+      com.google.protobuf.MessageLiteOrBuilder {
+
+    /**
+     * <code>uint64 begin_address = 1;</code>
+     * @return The beginAddress.
+     */
+    long getBeginAddress();
+
+    /**
+     * <code>uint64 end_address = 2;</code>
+     * @return The endAddress.
+     */
+    long getEndAddress();
+
+    /**
+     * <code>uint64 offset = 3;</code>
+     * @return The offset.
+     */
+    long getOffset();
+
+    /**
+     * <code>bool read = 4;</code>
+     * @return The read.
+     */
+    boolean getRead();
+
+    /**
+     * <code>bool write = 5;</code>
+     * @return The write.
+     */
+    boolean getWrite();
+
+    /**
+     * <code>bool execute = 6;</code>
+     * @return The execute.
+     */
+    boolean getExecute();
+
+    /**
+     * <code>string mapping_name = 7;</code>
+     * @return The mappingName.
+     */
+    java.lang.String getMappingName();
+    /**
+     * <code>string mapping_name = 7;</code>
+     * @return The bytes for mappingName.
+     */
+    com.google.protobuf.ByteString
+        getMappingNameBytes();
+
+    /**
+     * <code>string build_id = 8;</code>
+     * @return The buildId.
+     */
+    java.lang.String getBuildId();
+    /**
+     * <code>string build_id = 8;</code>
+     * @return The bytes for buildId.
+     */
+    com.google.protobuf.ByteString
+        getBuildIdBytes();
+
+    /**
+     * <code>uint64 load_bias = 9;</code>
+     * @return The loadBias.
+     */
+    long getLoadBias();
+  }
+  /**
+   * Protobuf type {@code MemoryMapping}
+   */
+  public  static final class MemoryMapping extends
+      com.google.protobuf.GeneratedMessageLite<
+          MemoryMapping, MemoryMapping.Builder> implements
+      // @@protoc_insertion_point(message_implements:MemoryMapping)
+      MemoryMappingOrBuilder {
+    private MemoryMapping() {
+      mappingName_ = "";
+      buildId_ = "";
+    }
+    public static final int BEGIN_ADDRESS_FIELD_NUMBER = 1;
+    private long beginAddress_;
+    /**
+     * <code>uint64 begin_address = 1;</code>
+     * @return The beginAddress.
+     */
+    @java.lang.Override
+    public long getBeginAddress() {
+      return beginAddress_;
+    }
+    /**
+     * <code>uint64 begin_address = 1;</code>
+     * @param value The beginAddress to set.
+     */
+    private void setBeginAddress(long value) {
+      
+      beginAddress_ = value;
+    }
+    /**
+     * <code>uint64 begin_address = 1;</code>
+     */
+    private void clearBeginAddress() {
+      
+      beginAddress_ = 0L;
+    }
+
+    public static final int END_ADDRESS_FIELD_NUMBER = 2;
+    private long endAddress_;
+    /**
+     * <code>uint64 end_address = 2;</code>
+     * @return The endAddress.
+     */
+    @java.lang.Override
+    public long getEndAddress() {
+      return endAddress_;
+    }
+    /**
+     * <code>uint64 end_address = 2;</code>
+     * @param value The endAddress to set.
+     */
+    private void setEndAddress(long value) {
+      
+      endAddress_ = value;
+    }
+    /**
+     * <code>uint64 end_address = 2;</code>
+     */
+    private void clearEndAddress() {
+      
+      endAddress_ = 0L;
+    }
+
+    public static final int OFFSET_FIELD_NUMBER = 3;
+    private long offset_;
+    /**
+     * <code>uint64 offset = 3;</code>
+     * @return The offset.
+     */
+    @java.lang.Override
+    public long getOffset() {
+      return offset_;
+    }
+    /**
+     * <code>uint64 offset = 3;</code>
+     * @param value The offset to set.
+     */
+    private void setOffset(long value) {
+      
+      offset_ = value;
+    }
+    /**
+     * <code>uint64 offset = 3;</code>
+     */
+    private void clearOffset() {
+      
+      offset_ = 0L;
+    }
+
+    public static final int READ_FIELD_NUMBER = 4;
+    private boolean read_;
+    /**
+     * <code>bool read = 4;</code>
+     * @return The read.
+     */
+    @java.lang.Override
+    public boolean getRead() {
+      return read_;
+    }
+    /**
+     * <code>bool read = 4;</code>
+     * @param value The read to set.
+     */
+    private void setRead(boolean value) {
+      
+      read_ = value;
+    }
+    /**
+     * <code>bool read = 4;</code>
+     */
+    private void clearRead() {
+      
+      read_ = false;
+    }
+
+    public static final int WRITE_FIELD_NUMBER = 5;
+    private boolean write_;
+    /**
+     * <code>bool write = 5;</code>
+     * @return The write.
+     */
+    @java.lang.Override
+    public boolean getWrite() {
+      return write_;
+    }
+    /**
+     * <code>bool write = 5;</code>
+     * @param value The write to set.
+     */
+    private void setWrite(boolean value) {
+      
+      write_ = value;
+    }
+    /**
+     * <code>bool write = 5;</code>
+     */
+    private void clearWrite() {
+      
+      write_ = false;
+    }
+
+    public static final int EXECUTE_FIELD_NUMBER = 6;
+    private boolean execute_;
+    /**
+     * <code>bool execute = 6;</code>
+     * @return The execute.
+     */
+    @java.lang.Override
+    public boolean getExecute() {
+      return execute_;
+    }
+    /**
+     * <code>bool execute = 6;</code>
+     * @param value The execute to set.
+     */
+    private void setExecute(boolean value) {
+      
+      execute_ = value;
+    }
+    /**
+     * <code>bool execute = 6;</code>
+     */
+    private void clearExecute() {
+      
+      execute_ = false;
+    }
+
+    public static final int MAPPING_NAME_FIELD_NUMBER = 7;
+    private java.lang.String mappingName_;
+    /**
+     * <code>string mapping_name = 7;</code>
+     * @return The mappingName.
+     */
+    @java.lang.Override
+    public java.lang.String getMappingName() {
+      return mappingName_;
+    }
+    /**
+     * <code>string mapping_name = 7;</code>
+     * @return The bytes for mappingName.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getMappingNameBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(mappingName_);
+    }
+    /**
+     * <code>string mapping_name = 7;</code>
+     * @param value The mappingName to set.
+     */
+    private void setMappingName(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      mappingName_ = value;
+    }
+    /**
+     * <code>string mapping_name = 7;</code>
+     */
+    private void clearMappingName() {
+      
+      mappingName_ = getDefaultInstance().getMappingName();
+    }
+    /**
+     * <code>string mapping_name = 7;</code>
+     * @param value The bytes for mappingName to set.
+     */
+    private void setMappingNameBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      mappingName_ = value.toStringUtf8();
+      
+    }
+
+    public static final int BUILD_ID_FIELD_NUMBER = 8;
+    private java.lang.String buildId_;
+    /**
+     * <code>string build_id = 8;</code>
+     * @return The buildId.
+     */
+    @java.lang.Override
+    public java.lang.String getBuildId() {
+      return buildId_;
+    }
+    /**
+     * <code>string build_id = 8;</code>
+     * @return The bytes for buildId.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getBuildIdBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(buildId_);
+    }
+    /**
+     * <code>string build_id = 8;</code>
+     * @param value The buildId to set.
+     */
+    private void setBuildId(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      buildId_ = value;
+    }
+    /**
+     * <code>string build_id = 8;</code>
+     */
+    private void clearBuildId() {
+      
+      buildId_ = getDefaultInstance().getBuildId();
+    }
+    /**
+     * <code>string build_id = 8;</code>
+     * @param value The bytes for buildId to set.
+     */
+    private void setBuildIdBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      buildId_ = value.toStringUtf8();
+      
+    }
+
+    public static final int LOAD_BIAS_FIELD_NUMBER = 9;
+    private long loadBias_;
+    /**
+     * <code>uint64 load_bias = 9;</code>
+     * @return The loadBias.
+     */
+    @java.lang.Override
+    public long getLoadBias() {
+      return loadBias_;
+    }
+    /**
+     * <code>uint64 load_bias = 9;</code>
+     * @param value The loadBias to set.
+     */
+    private void setLoadBias(long value) {
+      
+      loadBias_ = value;
+    }
+    /**
+     * <code>uint64 load_bias = 9;</code>
+     */
+    private void clearLoadBias() {
+      
+      loadBias_ = 0L;
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryMapping parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryMapping parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryMapping parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryMapping parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryMapping parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryMapping parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryMapping parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryMapping parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryMapping parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryMapping parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryMapping parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryMapping parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return (Builder) DEFAULT_INSTANCE.createBuilder();
+    }
+    public static Builder newBuilder(com.android.server.os.LinphoneTombstoneProtos.MemoryMapping prototype) {
+      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
+    }
+
+    /**
+     * Protobuf type {@code MemoryMapping}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageLite.Builder<
+          com.android.server.os.LinphoneTombstoneProtos.MemoryMapping, Builder> implements
+        // @@protoc_insertion_point(builder_implements:MemoryMapping)
+        com.android.server.os.LinphoneTombstoneProtos.MemoryMappingOrBuilder {
+      // Construct using com.android.server.os.LinphoneTombstoneProtos.MemoryMapping.newBuilder()
+      private Builder() {
+        super(DEFAULT_INSTANCE);
+      }
+
+
+      /**
+       * <code>uint64 begin_address = 1;</code>
+       * @return The beginAddress.
+       */
+      @java.lang.Override
+      public long getBeginAddress() {
+        return instance.getBeginAddress();
+      }
+      /**
+       * <code>uint64 begin_address = 1;</code>
+       * @param value The beginAddress to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBeginAddress(long value) {
+        copyOnWrite();
+        instance.setBeginAddress(value);
+        return this;
+      }
+      /**
+       * <code>uint64 begin_address = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearBeginAddress() {
+        copyOnWrite();
+        instance.clearBeginAddress();
+        return this;
+      }
+
+      /**
+       * <code>uint64 end_address = 2;</code>
+       * @return The endAddress.
+       */
+      @java.lang.Override
+      public long getEndAddress() {
+        return instance.getEndAddress();
+      }
+      /**
+       * <code>uint64 end_address = 2;</code>
+       * @param value The endAddress to set.
+       * @return This builder for chaining.
+       */
+      public Builder setEndAddress(long value) {
+        copyOnWrite();
+        instance.setEndAddress(value);
+        return this;
+      }
+      /**
+       * <code>uint64 end_address = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearEndAddress() {
+        copyOnWrite();
+        instance.clearEndAddress();
+        return this;
+      }
+
+      /**
+       * <code>uint64 offset = 3;</code>
+       * @return The offset.
+       */
+      @java.lang.Override
+      public long getOffset() {
+        return instance.getOffset();
+      }
+      /**
+       * <code>uint64 offset = 3;</code>
+       * @param value The offset to set.
+       * @return This builder for chaining.
+       */
+      public Builder setOffset(long value) {
+        copyOnWrite();
+        instance.setOffset(value);
+        return this;
+      }
+      /**
+       * <code>uint64 offset = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearOffset() {
+        copyOnWrite();
+        instance.clearOffset();
+        return this;
+      }
+
+      /**
+       * <code>bool read = 4;</code>
+       * @return The read.
+       */
+      @java.lang.Override
+      public boolean getRead() {
+        return instance.getRead();
+      }
+      /**
+       * <code>bool read = 4;</code>
+       * @param value The read to set.
+       * @return This builder for chaining.
+       */
+      public Builder setRead(boolean value) {
+        copyOnWrite();
+        instance.setRead(value);
+        return this;
+      }
+      /**
+       * <code>bool read = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearRead() {
+        copyOnWrite();
+        instance.clearRead();
+        return this;
+      }
+
+      /**
+       * <code>bool write = 5;</code>
+       * @return The write.
+       */
+      @java.lang.Override
+      public boolean getWrite() {
+        return instance.getWrite();
+      }
+      /**
+       * <code>bool write = 5;</code>
+       * @param value The write to set.
+       * @return This builder for chaining.
+       */
+      public Builder setWrite(boolean value) {
+        copyOnWrite();
+        instance.setWrite(value);
+        return this;
+      }
+      /**
+       * <code>bool write = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearWrite() {
+        copyOnWrite();
+        instance.clearWrite();
+        return this;
+      }
+
+      /**
+       * <code>bool execute = 6;</code>
+       * @return The execute.
+       */
+      @java.lang.Override
+      public boolean getExecute() {
+        return instance.getExecute();
+      }
+      /**
+       * <code>bool execute = 6;</code>
+       * @param value The execute to set.
+       * @return This builder for chaining.
+       */
+      public Builder setExecute(boolean value) {
+        copyOnWrite();
+        instance.setExecute(value);
+        return this;
+      }
+      /**
+       * <code>bool execute = 6;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearExecute() {
+        copyOnWrite();
+        instance.clearExecute();
+        return this;
+      }
+
+      /**
+       * <code>string mapping_name = 7;</code>
+       * @return The mappingName.
+       */
+      @java.lang.Override
+      public java.lang.String getMappingName() {
+        return instance.getMappingName();
+      }
+      /**
+       * <code>string mapping_name = 7;</code>
+       * @return The bytes for mappingName.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getMappingNameBytes() {
+        return instance.getMappingNameBytes();
+      }
+      /**
+       * <code>string mapping_name = 7;</code>
+       * @param value The mappingName to set.
+       * @return This builder for chaining.
+       */
+      public Builder setMappingName(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setMappingName(value);
+        return this;
+      }
+      /**
+       * <code>string mapping_name = 7;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearMappingName() {
+        copyOnWrite();
+        instance.clearMappingName();
+        return this;
+      }
+      /**
+       * <code>string mapping_name = 7;</code>
+       * @param value The bytes for mappingName to set.
+       * @return This builder for chaining.
+       */
+      public Builder setMappingNameBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setMappingNameBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>string build_id = 8;</code>
+       * @return The buildId.
+       */
+      @java.lang.Override
+      public java.lang.String getBuildId() {
+        return instance.getBuildId();
+      }
+      /**
+       * <code>string build_id = 8;</code>
+       * @return The bytes for buildId.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getBuildIdBytes() {
+        return instance.getBuildIdBytes();
+      }
+      /**
+       * <code>string build_id = 8;</code>
+       * @param value The buildId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBuildId(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setBuildId(value);
+        return this;
+      }
+      /**
+       * <code>string build_id = 8;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearBuildId() {
+        copyOnWrite();
+        instance.clearBuildId();
+        return this;
+      }
+      /**
+       * <code>string build_id = 8;</code>
+       * @param value The bytes for buildId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBuildIdBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setBuildIdBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>uint64 load_bias = 9;</code>
+       * @return The loadBias.
+       */
+      @java.lang.Override
+      public long getLoadBias() {
+        return instance.getLoadBias();
+      }
+      /**
+       * <code>uint64 load_bias = 9;</code>
+       * @param value The loadBias to set.
+       * @return This builder for chaining.
+       */
+      public Builder setLoadBias(long value) {
+        copyOnWrite();
+        instance.setLoadBias(value);
+        return this;
+      }
+      /**
+       * <code>uint64 load_bias = 9;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearLoadBias() {
+        copyOnWrite();
+        instance.clearLoadBias();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:MemoryMapping)
+    }
+    @java.lang.Override
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new com.android.server.os.LinphoneTombstoneProtos.MemoryMapping();
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case BUILD_MESSAGE_INFO: {
+            java.lang.Object[] objects = new java.lang.Object[] {
+              "beginAddress_",
+              "endAddress_",
+              "offset_",
+              "read_",
+              "write_",
+              "execute_",
+              "mappingName_",
+              "buildId_",
+              "loadBias_",
+            };
+            java.lang.String info =
+                "\u0000\t\u0000\u0000\u0001\t\t\u0000\u0000\u0000\u0001\u0003\u0002\u0003\u0003\u0003" +
+                "\u0004\u0007\u0005\u0007\u0006\u0007\u0007\u0208\b\u0208\t\u0003";
+            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          com.google.protobuf.Parser<com.android.server.os.LinphoneTombstoneProtos.MemoryMapping> parser = PARSER;
+          if (parser == null) {
+            synchronized (com.android.server.os.LinphoneTombstoneProtos.MemoryMapping.class) {
+              parser = PARSER;
+              if (parser == null) {
+                parser =
+                    new DefaultInstanceBasedParser<com.android.server.os.LinphoneTombstoneProtos.MemoryMapping>(
+                        DEFAULT_INSTANCE);
+                PARSER = parser;
+              }
+            }
+          }
+          return parser;
+      }
+      case GET_MEMOIZED_IS_INITIALIZED: {
+        return (byte) 1;
+      }
+      case SET_MEMOIZED_IS_INITIALIZED: {
+        return null;
+      }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:MemoryMapping)
+    private static final com.android.server.os.LinphoneTombstoneProtos.MemoryMapping DEFAULT_INSTANCE;
+    static {
+      MemoryMapping defaultInstance = new MemoryMapping();
+      // New instances are implicitly immutable so no need to make
+      // immutable.
+      DEFAULT_INSTANCE = defaultInstance;
+      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
+        MemoryMapping.class, defaultInstance);
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.MemoryMapping getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<MemoryMapping> PARSER;
+
+    public static com.google.protobuf.Parser<MemoryMapping> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
+  }
+
+  public interface FDOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:FD)
+      com.google.protobuf.MessageLiteOrBuilder {
+
+    /**
+     * <code>int32 fd = 1;</code>
+     * @return The fd.
+     */
+    int getFd();
+
+    /**
+     * <code>string path = 2;</code>
+     * @return The path.
+     */
+    java.lang.String getPath();
+    /**
+     * <code>string path = 2;</code>
+     * @return The bytes for path.
+     */
+    com.google.protobuf.ByteString
+        getPathBytes();
+
+    /**
+     * <code>string owner = 3;</code>
+     * @return The owner.
+     */
+    java.lang.String getOwner();
+    /**
+     * <code>string owner = 3;</code>
+     * @return The bytes for owner.
+     */
+    com.google.protobuf.ByteString
+        getOwnerBytes();
+
+    /**
+     * <code>uint64 tag = 4;</code>
+     * @return The tag.
+     */
+    long getTag();
+  }
+  /**
+   * Protobuf type {@code FD}
+   */
+  public  static final class FD extends
+      com.google.protobuf.GeneratedMessageLite<
+          FD, FD.Builder> implements
+      // @@protoc_insertion_point(message_implements:FD)
+      FDOrBuilder {
+    private FD() {
+      path_ = "";
+      owner_ = "";
+    }
+    public static final int FD_FIELD_NUMBER = 1;
+    private int fd_;
+    /**
+     * <code>int32 fd = 1;</code>
+     * @return The fd.
+     */
+    @java.lang.Override
+    public int getFd() {
+      return fd_;
+    }
+    /**
+     * <code>int32 fd = 1;</code>
+     * @param value The fd to set.
+     */
+    private void setFd(int value) {
+      
+      fd_ = value;
+    }
+    /**
+     * <code>int32 fd = 1;</code>
+     */
+    private void clearFd() {
+      
+      fd_ = 0;
+    }
+
+    public static final int PATH_FIELD_NUMBER = 2;
+    private java.lang.String path_;
+    /**
+     * <code>string path = 2;</code>
+     * @return The path.
+     */
+    @java.lang.Override
+    public java.lang.String getPath() {
+      return path_;
+    }
+    /**
+     * <code>string path = 2;</code>
+     * @return The bytes for path.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getPathBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(path_);
+    }
+    /**
+     * <code>string path = 2;</code>
+     * @param value The path to set.
+     */
+    private void setPath(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      path_ = value;
+    }
+    /**
+     * <code>string path = 2;</code>
+     */
+    private void clearPath() {
+      
+      path_ = getDefaultInstance().getPath();
+    }
+    /**
+     * <code>string path = 2;</code>
+     * @param value The bytes for path to set.
+     */
+    private void setPathBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      path_ = value.toStringUtf8();
+      
+    }
+
+    public static final int OWNER_FIELD_NUMBER = 3;
+    private java.lang.String owner_;
+    /**
+     * <code>string owner = 3;</code>
+     * @return The owner.
+     */
+    @java.lang.Override
+    public java.lang.String getOwner() {
+      return owner_;
+    }
+    /**
+     * <code>string owner = 3;</code>
+     * @return The bytes for owner.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getOwnerBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(owner_);
+    }
+    /**
+     * <code>string owner = 3;</code>
+     * @param value The owner to set.
+     */
+    private void setOwner(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      owner_ = value;
+    }
+    /**
+     * <code>string owner = 3;</code>
+     */
+    private void clearOwner() {
+      
+      owner_ = getDefaultInstance().getOwner();
+    }
+    /**
+     * <code>string owner = 3;</code>
+     * @param value The bytes for owner to set.
+     */
+    private void setOwnerBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      owner_ = value.toStringUtf8();
+      
+    }
+
+    public static final int TAG_FIELD_NUMBER = 4;
+    private long tag_;
+    /**
+     * <code>uint64 tag = 4;</code>
+     * @return The tag.
+     */
+    @java.lang.Override
+    public long getTag() {
+      return tag_;
+    }
+    /**
+     * <code>uint64 tag = 4;</code>
+     * @param value The tag to set.
+     */
+    private void setTag(long value) {
+      
+      tag_ = value;
+    }
+    /**
+     * <code>uint64 tag = 4;</code>
+     */
+    private void clearTag() {
+      
+      tag_ = 0L;
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.FD parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.FD parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.FD parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.FD parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.FD parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.FD parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.FD parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.FD parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.FD parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.FD parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.FD parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.FD parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return (Builder) DEFAULT_INSTANCE.createBuilder();
+    }
+    public static Builder newBuilder(com.android.server.os.LinphoneTombstoneProtos.FD prototype) {
+      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
+    }
+
+    /**
+     * Protobuf type {@code FD}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageLite.Builder<
+          com.android.server.os.LinphoneTombstoneProtos.FD, Builder> implements
+        // @@protoc_insertion_point(builder_implements:FD)
+        com.android.server.os.LinphoneTombstoneProtos.FDOrBuilder {
+      // Construct using com.android.server.os.LinphoneTombstoneProtos.FD.newBuilder()
+      private Builder() {
+        super(DEFAULT_INSTANCE);
+      }
+
+
+      /**
+       * <code>int32 fd = 1;</code>
+       * @return The fd.
+       */
+      @java.lang.Override
+      public int getFd() {
+        return instance.getFd();
+      }
+      /**
+       * <code>int32 fd = 1;</code>
+       * @param value The fd to set.
+       * @return This builder for chaining.
+       */
+      public Builder setFd(int value) {
+        copyOnWrite();
+        instance.setFd(value);
+        return this;
+      }
+      /**
+       * <code>int32 fd = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearFd() {
+        copyOnWrite();
+        instance.clearFd();
+        return this;
+      }
+
+      /**
+       * <code>string path = 2;</code>
+       * @return The path.
+       */
+      @java.lang.Override
+      public java.lang.String getPath() {
+        return instance.getPath();
+      }
+      /**
+       * <code>string path = 2;</code>
+       * @return The bytes for path.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getPathBytes() {
+        return instance.getPathBytes();
+      }
+      /**
+       * <code>string path = 2;</code>
+       * @param value The path to set.
+       * @return This builder for chaining.
+       */
+      public Builder setPath(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setPath(value);
+        return this;
+      }
+      /**
+       * <code>string path = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearPath() {
+        copyOnWrite();
+        instance.clearPath();
+        return this;
+      }
+      /**
+       * <code>string path = 2;</code>
+       * @param value The bytes for path to set.
+       * @return This builder for chaining.
+       */
+      public Builder setPathBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setPathBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>string owner = 3;</code>
+       * @return The owner.
+       */
+      @java.lang.Override
+      public java.lang.String getOwner() {
+        return instance.getOwner();
+      }
+      /**
+       * <code>string owner = 3;</code>
+       * @return The bytes for owner.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getOwnerBytes() {
+        return instance.getOwnerBytes();
+      }
+      /**
+       * <code>string owner = 3;</code>
+       * @param value The owner to set.
+       * @return This builder for chaining.
+       */
+      public Builder setOwner(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setOwner(value);
+        return this;
+      }
+      /**
+       * <code>string owner = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearOwner() {
+        copyOnWrite();
+        instance.clearOwner();
+        return this;
+      }
+      /**
+       * <code>string owner = 3;</code>
+       * @param value The bytes for owner to set.
+       * @return This builder for chaining.
+       */
+      public Builder setOwnerBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setOwnerBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>uint64 tag = 4;</code>
+       * @return The tag.
+       */
+      @java.lang.Override
+      public long getTag() {
+        return instance.getTag();
+      }
+      /**
+       * <code>uint64 tag = 4;</code>
+       * @param value The tag to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTag(long value) {
+        copyOnWrite();
+        instance.setTag(value);
+        return this;
+      }
+      /**
+       * <code>uint64 tag = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearTag() {
+        copyOnWrite();
+        instance.clearTag();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:FD)
+    }
+    @java.lang.Override
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new com.android.server.os.LinphoneTombstoneProtos.FD();
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case BUILD_MESSAGE_INFO: {
+            java.lang.Object[] objects = new java.lang.Object[] {
+              "fd_",
+              "path_",
+              "owner_",
+              "tag_",
+            };
+            java.lang.String info =
+                "\u0000\u0004\u0000\u0000\u0001\u0004\u0004\u0000\u0000\u0000\u0001\u0004\u0002\u0208" +
+                "\u0003\u0208\u0004\u0003";
+            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          com.google.protobuf.Parser<com.android.server.os.LinphoneTombstoneProtos.FD> parser = PARSER;
+          if (parser == null) {
+            synchronized (com.android.server.os.LinphoneTombstoneProtos.FD.class) {
+              parser = PARSER;
+              if (parser == null) {
+                parser =
+                    new DefaultInstanceBasedParser<com.android.server.os.LinphoneTombstoneProtos.FD>(
+                        DEFAULT_INSTANCE);
+                PARSER = parser;
+              }
+            }
+          }
+          return parser;
+      }
+      case GET_MEMOIZED_IS_INITIALIZED: {
+        return (byte) 1;
+      }
+      case SET_MEMOIZED_IS_INITIALIZED: {
+        return null;
+      }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:FD)
+    private static final com.android.server.os.LinphoneTombstoneProtos.FD DEFAULT_INSTANCE;
+    static {
+      FD defaultInstance = new FD();
+      // New instances are implicitly immutable so no need to make
+      // immutable.
+      DEFAULT_INSTANCE = defaultInstance;
+      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
+        FD.class, defaultInstance);
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.FD getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<FD> PARSER;
+
+    public static com.google.protobuf.Parser<FD> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
+  }
+
+  public interface LogBufferOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:LogBuffer)
+      com.google.protobuf.MessageLiteOrBuilder {
+
+    /**
+     * <code>string name = 1;</code>
+     * @return The name.
+     */
+    java.lang.String getName();
+    /**
+     * <code>string name = 1;</code>
+     * @return The bytes for name.
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    /**
+     * <code>repeated .LogMessage logs = 2;</code>
+     */
+    java.util.List<com.android.server.os.LinphoneTombstoneProtos.LogMessage> 
+        getLogsList();
+    /**
+     * <code>repeated .LogMessage logs = 2;</code>
+     */
+    com.android.server.os.LinphoneTombstoneProtos.LogMessage getLogs(int index);
+    /**
+     * <code>repeated .LogMessage logs = 2;</code>
+     */
+    int getLogsCount();
+  }
+  /**
+   * Protobuf type {@code LogBuffer}
+   */
+  public  static final class LogBuffer extends
+      com.google.protobuf.GeneratedMessageLite<
+          LogBuffer, LogBuffer.Builder> implements
+      // @@protoc_insertion_point(message_implements:LogBuffer)
+      LogBufferOrBuilder {
+    private LogBuffer() {
+      name_ = "";
+      logs_ = emptyProtobufList();
+    }
+    public static final int NAME_FIELD_NUMBER = 1;
+    private java.lang.String name_;
+    /**
+     * <code>string name = 1;</code>
+     * @return The name.
+     */
+    @java.lang.Override
+    public java.lang.String getName() {
+      return name_;
+    }
+    /**
+     * <code>string name = 1;</code>
+     * @return The bytes for name.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(name_);
+    }
+    /**
+     * <code>string name = 1;</code>
+     * @param value The name to set.
+     */
+    private void setName(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      name_ = value;
+    }
+    /**
+     * <code>string name = 1;</code>
+     */
+    private void clearName() {
+      
+      name_ = getDefaultInstance().getName();
+    }
+    /**
+     * <code>string name = 1;</code>
+     * @param value The bytes for name to set.
+     */
+    private void setNameBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      name_ = value.toStringUtf8();
+      
+    }
+
+    public static final int LOGS_FIELD_NUMBER = 2;
+    private com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.LogMessage> logs_;
+    /**
+     * <code>repeated .LogMessage logs = 2;</code>
+     */
+    @java.lang.Override
+    public java.util.List<com.android.server.os.LinphoneTombstoneProtos.LogMessage> getLogsList() {
+      return logs_;
+    }
+    /**
+     * <code>repeated .LogMessage logs = 2;</code>
+     */
+    public java.util.List<? extends com.android.server.os.LinphoneTombstoneProtos.LogMessageOrBuilder> 
+        getLogsOrBuilderList() {
+      return logs_;
+    }
+    /**
+     * <code>repeated .LogMessage logs = 2;</code>
+     */
+    @java.lang.Override
+    public int getLogsCount() {
+      return logs_.size();
+    }
+    /**
+     * <code>repeated .LogMessage logs = 2;</code>
+     */
+    @java.lang.Override
+    public com.android.server.os.LinphoneTombstoneProtos.LogMessage getLogs(int index) {
+      return logs_.get(index);
+    }
+    /**
+     * <code>repeated .LogMessage logs = 2;</code>
+     */
+    public com.android.server.os.LinphoneTombstoneProtos.LogMessageOrBuilder getLogsOrBuilder(
+        int index) {
+      return logs_.get(index);
+    }
+    private void ensureLogsIsMutable() {
+      com.google.protobuf.Internal.ProtobufList<com.android.server.os.LinphoneTombstoneProtos.LogMessage> tmp = logs_;
+      if (!tmp.isModifiable()) {
+        logs_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
+       }
+    }
+
+    /**
+     * <code>repeated .LogMessage logs = 2;</code>
+     */
+    private void setLogs(
+        int index, com.android.server.os.LinphoneTombstoneProtos.LogMessage value) {
+      value.getClass();
+  ensureLogsIsMutable();
+      logs_.set(index, value);
+    }
+    /**
+     * <code>repeated .LogMessage logs = 2;</code>
+     */
+    private void addLogs(com.android.server.os.LinphoneTombstoneProtos.LogMessage value) {
+      value.getClass();
+  ensureLogsIsMutable();
+      logs_.add(value);
+    }
+    /**
+     * <code>repeated .LogMessage logs = 2;</code>
+     */
+    private void addLogs(
+        int index, com.android.server.os.LinphoneTombstoneProtos.LogMessage value) {
+      value.getClass();
+  ensureLogsIsMutable();
+      logs_.add(index, value);
+    }
+    /**
+     * <code>repeated .LogMessage logs = 2;</code>
+     */
+    private void addAllLogs(
+        java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.LogMessage> values) {
+      ensureLogsIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, logs_);
+    }
+    /**
+     * <code>repeated .LogMessage logs = 2;</code>
+     */
+    private void clearLogs() {
+      logs_ = emptyProtobufList();
+    }
+    /**
+     * <code>repeated .LogMessage logs = 2;</code>
+     */
+    private void removeLogs(int index) {
+      ensureLogsIsMutable();
+      logs_.remove(index);
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.LogBuffer parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogBuffer parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogBuffer parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogBuffer parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogBuffer parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogBuffer parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogBuffer parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogBuffer parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogBuffer parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogBuffer parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogBuffer parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogBuffer parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return (Builder) DEFAULT_INSTANCE.createBuilder();
+    }
+    public static Builder newBuilder(com.android.server.os.LinphoneTombstoneProtos.LogBuffer prototype) {
+      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
+    }
+
+    /**
+     * Protobuf type {@code LogBuffer}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageLite.Builder<
+          com.android.server.os.LinphoneTombstoneProtos.LogBuffer, Builder> implements
+        // @@protoc_insertion_point(builder_implements:LogBuffer)
+        com.android.server.os.LinphoneTombstoneProtos.LogBufferOrBuilder {
+      // Construct using com.android.server.os.LinphoneTombstoneProtos.LogBuffer.newBuilder()
+      private Builder() {
+        super(DEFAULT_INSTANCE);
+      }
+
+
+      /**
+       * <code>string name = 1;</code>
+       * @return The name.
+       */
+      @java.lang.Override
+      public java.lang.String getName() {
+        return instance.getName();
+      }
+      /**
+       * <code>string name = 1;</code>
+       * @return The bytes for name.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        return instance.getNameBytes();
+      }
+      /**
+       * <code>string name = 1;</code>
+       * @param value The name to set.
+       * @return This builder for chaining.
+       */
+      public Builder setName(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setName(value);
+        return this;
+      }
+      /**
+       * <code>string name = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearName() {
+        copyOnWrite();
+        instance.clearName();
+        return this;
+      }
+      /**
+       * <code>string name = 1;</code>
+       * @param value The bytes for name to set.
+       * @return This builder for chaining.
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setNameBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>repeated .LogMessage logs = 2;</code>
+       */
+      @java.lang.Override
+      public java.util.List<com.android.server.os.LinphoneTombstoneProtos.LogMessage> getLogsList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getLogsList());
+      }
+      /**
+       * <code>repeated .LogMessage logs = 2;</code>
+       */
+      @java.lang.Override
+      public int getLogsCount() {
+        return instance.getLogsCount();
+      }/**
+       * <code>repeated .LogMessage logs = 2;</code>
+       */
+      @java.lang.Override
+      public com.android.server.os.LinphoneTombstoneProtos.LogMessage getLogs(int index) {
+        return instance.getLogs(index);
+      }
+      /**
+       * <code>repeated .LogMessage logs = 2;</code>
+       */
+      public Builder setLogs(
+          int index, com.android.server.os.LinphoneTombstoneProtos.LogMessage value) {
+        copyOnWrite();
+        instance.setLogs(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .LogMessage logs = 2;</code>
+       */
+      public Builder setLogs(
+          int index, com.android.server.os.LinphoneTombstoneProtos.LogMessage.Builder builderForValue) {
+        copyOnWrite();
+        instance.setLogs(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .LogMessage logs = 2;</code>
+       */
+      public Builder addLogs(com.android.server.os.LinphoneTombstoneProtos.LogMessage value) {
+        copyOnWrite();
+        instance.addLogs(value);
+        return this;
+      }
+      /**
+       * <code>repeated .LogMessage logs = 2;</code>
+       */
+      public Builder addLogs(
+          int index, com.android.server.os.LinphoneTombstoneProtos.LogMessage value) {
+        copyOnWrite();
+        instance.addLogs(index, value);
+        return this;
+      }
+      /**
+       * <code>repeated .LogMessage logs = 2;</code>
+       */
+      public Builder addLogs(
+          com.android.server.os.LinphoneTombstoneProtos.LogMessage.Builder builderForValue) {
+        copyOnWrite();
+        instance.addLogs(builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .LogMessage logs = 2;</code>
+       */
+      public Builder addLogs(
+          int index, com.android.server.os.LinphoneTombstoneProtos.LogMessage.Builder builderForValue) {
+        copyOnWrite();
+        instance.addLogs(index,
+            builderForValue.build());
+        return this;
+      }
+      /**
+       * <code>repeated .LogMessage logs = 2;</code>
+       */
+      public Builder addAllLogs(
+          java.lang.Iterable<? extends com.android.server.os.LinphoneTombstoneProtos.LogMessage> values) {
+        copyOnWrite();
+        instance.addAllLogs(values);
+        return this;
+      }
+      /**
+       * <code>repeated .LogMessage logs = 2;</code>
+       */
+      public Builder clearLogs() {
+        copyOnWrite();
+        instance.clearLogs();
+        return this;
+      }
+      /**
+       * <code>repeated .LogMessage logs = 2;</code>
+       */
+      public Builder removeLogs(int index) {
+        copyOnWrite();
+        instance.removeLogs(index);
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:LogBuffer)
+    }
+    @java.lang.Override
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new com.android.server.os.LinphoneTombstoneProtos.LogBuffer();
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case BUILD_MESSAGE_INFO: {
+            java.lang.Object[] objects = new java.lang.Object[] {
+              "name_",
+              "logs_",
+              com.android.server.os.LinphoneTombstoneProtos.LogMessage.class,
+            };
+            java.lang.String info =
+                "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0001\u0000\u0001\u0208\u0002\u001b" +
+                "";
+            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          com.google.protobuf.Parser<com.android.server.os.LinphoneTombstoneProtos.LogBuffer> parser = PARSER;
+          if (parser == null) {
+            synchronized (com.android.server.os.LinphoneTombstoneProtos.LogBuffer.class) {
+              parser = PARSER;
+              if (parser == null) {
+                parser =
+                    new DefaultInstanceBasedParser<com.android.server.os.LinphoneTombstoneProtos.LogBuffer>(
+                        DEFAULT_INSTANCE);
+                PARSER = parser;
+              }
+            }
+          }
+          return parser;
+      }
+      case GET_MEMOIZED_IS_INITIALIZED: {
+        return (byte) 1;
+      }
+      case SET_MEMOIZED_IS_INITIALIZED: {
+        return null;
+      }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:LogBuffer)
+    private static final com.android.server.os.LinphoneTombstoneProtos.LogBuffer DEFAULT_INSTANCE;
+    static {
+      LogBuffer defaultInstance = new LogBuffer();
+      // New instances are implicitly immutable so no need to make
+      // immutable.
+      DEFAULT_INSTANCE = defaultInstance;
+      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
+        LogBuffer.class, defaultInstance);
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.LogBuffer getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<LogBuffer> PARSER;
+
+    public static com.google.protobuf.Parser<LogBuffer> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
+  }
+
+  public interface LogMessageOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:LogMessage)
+      com.google.protobuf.MessageLiteOrBuilder {
+
+    /**
+     * <code>string timestamp = 1;</code>
+     * @return The timestamp.
+     */
+    java.lang.String getTimestamp();
+    /**
+     * <code>string timestamp = 1;</code>
+     * @return The bytes for timestamp.
+     */
+    com.google.protobuf.ByteString
+        getTimestampBytes();
+
+    /**
+     * <code>uint32 pid = 2;</code>
+     * @return The pid.
+     */
+    int getPid();
+
+    /**
+     * <code>uint32 tid = 3;</code>
+     * @return The tid.
+     */
+    int getTid();
+
+    /**
+     * <code>uint32 priority = 4;</code>
+     * @return The priority.
+     */
+    int getPriority();
+
+    /**
+     * <code>string tag = 5;</code>
+     * @return The tag.
+     */
+    java.lang.String getTag();
+    /**
+     * <code>string tag = 5;</code>
+     * @return The bytes for tag.
+     */
+    com.google.protobuf.ByteString
+        getTagBytes();
+
+    /**
+     * <code>string message = 6;</code>
+     * @return The message.
+     */
+    java.lang.String getMessage();
+    /**
+     * <code>string message = 6;</code>
+     * @return The bytes for message.
+     */
+    com.google.protobuf.ByteString
+        getMessageBytes();
+  }
+  /**
+   * Protobuf type {@code LogMessage}
+   */
+  public  static final class LogMessage extends
+      com.google.protobuf.GeneratedMessageLite<
+          LogMessage, LogMessage.Builder> implements
+      // @@protoc_insertion_point(message_implements:LogMessage)
+      LogMessageOrBuilder {
+    private LogMessage() {
+      timestamp_ = "";
+      tag_ = "";
+      message_ = "";
+    }
+    public static final int TIMESTAMP_FIELD_NUMBER = 1;
+    private java.lang.String timestamp_;
+    /**
+     * <code>string timestamp = 1;</code>
+     * @return The timestamp.
+     */
+    @java.lang.Override
+    public java.lang.String getTimestamp() {
+      return timestamp_;
+    }
+    /**
+     * <code>string timestamp = 1;</code>
+     * @return The bytes for timestamp.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getTimestampBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(timestamp_);
+    }
+    /**
+     * <code>string timestamp = 1;</code>
+     * @param value The timestamp to set.
+     */
+    private void setTimestamp(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      timestamp_ = value;
+    }
+    /**
+     * <code>string timestamp = 1;</code>
+     */
+    private void clearTimestamp() {
+      
+      timestamp_ = getDefaultInstance().getTimestamp();
+    }
+    /**
+     * <code>string timestamp = 1;</code>
+     * @param value The bytes for timestamp to set.
+     */
+    private void setTimestampBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      timestamp_ = value.toStringUtf8();
+      
+    }
+
+    public static final int PID_FIELD_NUMBER = 2;
+    private int pid_;
+    /**
+     * <code>uint32 pid = 2;</code>
+     * @return The pid.
+     */
+    @java.lang.Override
+    public int getPid() {
+      return pid_;
+    }
+    /**
+     * <code>uint32 pid = 2;</code>
+     * @param value The pid to set.
+     */
+    private void setPid(int value) {
+      
+      pid_ = value;
+    }
+    /**
+     * <code>uint32 pid = 2;</code>
+     */
+    private void clearPid() {
+      
+      pid_ = 0;
+    }
+
+    public static final int TID_FIELD_NUMBER = 3;
+    private int tid_;
+    /**
+     * <code>uint32 tid = 3;</code>
+     * @return The tid.
+     */
+    @java.lang.Override
+    public int getTid() {
+      return tid_;
+    }
+    /**
+     * <code>uint32 tid = 3;</code>
+     * @param value The tid to set.
+     */
+    private void setTid(int value) {
+      
+      tid_ = value;
+    }
+    /**
+     * <code>uint32 tid = 3;</code>
+     */
+    private void clearTid() {
+      
+      tid_ = 0;
+    }
+
+    public static final int PRIORITY_FIELD_NUMBER = 4;
+    private int priority_;
+    /**
+     * <code>uint32 priority = 4;</code>
+     * @return The priority.
+     */
+    @java.lang.Override
+    public int getPriority() {
+      return priority_;
+    }
+    /**
+     * <code>uint32 priority = 4;</code>
+     * @param value The priority to set.
+     */
+    private void setPriority(int value) {
+      
+      priority_ = value;
+    }
+    /**
+     * <code>uint32 priority = 4;</code>
+     */
+    private void clearPriority() {
+      
+      priority_ = 0;
+    }
+
+    public static final int TAG_FIELD_NUMBER = 5;
+    private java.lang.String tag_;
+    /**
+     * <code>string tag = 5;</code>
+     * @return The tag.
+     */
+    @java.lang.Override
+    public java.lang.String getTag() {
+      return tag_;
+    }
+    /**
+     * <code>string tag = 5;</code>
+     * @return The bytes for tag.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getTagBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(tag_);
+    }
+    /**
+     * <code>string tag = 5;</code>
+     * @param value The tag to set.
+     */
+    private void setTag(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      tag_ = value;
+    }
+    /**
+     * <code>string tag = 5;</code>
+     */
+    private void clearTag() {
+      
+      tag_ = getDefaultInstance().getTag();
+    }
+    /**
+     * <code>string tag = 5;</code>
+     * @param value The bytes for tag to set.
+     */
+    private void setTagBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      tag_ = value.toStringUtf8();
+      
+    }
+
+    public static final int MESSAGE_FIELD_NUMBER = 6;
+    private java.lang.String message_;
+    /**
+     * <code>string message = 6;</code>
+     * @return The message.
+     */
+    @java.lang.Override
+    public java.lang.String getMessage() {
+      return message_;
+    }
+    /**
+     * <code>string message = 6;</code>
+     * @return The bytes for message.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getMessageBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(message_);
+    }
+    /**
+     * <code>string message = 6;</code>
+     * @param value The message to set.
+     */
+    private void setMessage(
+        java.lang.String value) {
+      java.lang.Class<?> valueClass = value.getClass();
+  
+      message_ = value;
+    }
+    /**
+     * <code>string message = 6;</code>
+     */
+    private void clearMessage() {
+      
+      message_ = getDefaultInstance().getMessage();
+    }
+    /**
+     * <code>string message = 6;</code>
+     * @param value The bytes for message to set.
+     */
+    private void setMessageBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      message_ = value.toStringUtf8();
+      
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.LogMessage parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogMessage parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogMessage parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogMessage parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogMessage parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogMessage parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogMessage parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogMessage parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogMessage parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogMessage parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogMessage parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
+    }
+    public static com.android.server.os.LinphoneTombstoneProtos.LogMessage parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return (Builder) DEFAULT_INSTANCE.createBuilder();
+    }
+    public static Builder newBuilder(com.android.server.os.LinphoneTombstoneProtos.LogMessage prototype) {
+      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
+    }
+
+    /**
+     * Protobuf type {@code LogMessage}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageLite.Builder<
+          com.android.server.os.LinphoneTombstoneProtos.LogMessage, Builder> implements
+        // @@protoc_insertion_point(builder_implements:LogMessage)
+        com.android.server.os.LinphoneTombstoneProtos.LogMessageOrBuilder {
+      // Construct using com.android.server.os.LinphoneTombstoneProtos.LogMessage.newBuilder()
+      private Builder() {
+        super(DEFAULT_INSTANCE);
+      }
+
+
+      /**
+       * <code>string timestamp = 1;</code>
+       * @return The timestamp.
+       */
+      @java.lang.Override
+      public java.lang.String getTimestamp() {
+        return instance.getTimestamp();
+      }
+      /**
+       * <code>string timestamp = 1;</code>
+       * @return The bytes for timestamp.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getTimestampBytes() {
+        return instance.getTimestampBytes();
+      }
+      /**
+       * <code>string timestamp = 1;</code>
+       * @param value The timestamp to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTimestamp(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setTimestamp(value);
+        return this;
+      }
+      /**
+       * <code>string timestamp = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearTimestamp() {
+        copyOnWrite();
+        instance.clearTimestamp();
+        return this;
+      }
+      /**
+       * <code>string timestamp = 1;</code>
+       * @param value The bytes for timestamp to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTimestampBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setTimestampBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>uint32 pid = 2;</code>
+       * @return The pid.
+       */
+      @java.lang.Override
+      public int getPid() {
+        return instance.getPid();
+      }
+      /**
+       * <code>uint32 pid = 2;</code>
+       * @param value The pid to set.
+       * @return This builder for chaining.
+       */
+      public Builder setPid(int value) {
+        copyOnWrite();
+        instance.setPid(value);
+        return this;
+      }
+      /**
+       * <code>uint32 pid = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearPid() {
+        copyOnWrite();
+        instance.clearPid();
+        return this;
+      }
+
+      /**
+       * <code>uint32 tid = 3;</code>
+       * @return The tid.
+       */
+      @java.lang.Override
+      public int getTid() {
+        return instance.getTid();
+      }
+      /**
+       * <code>uint32 tid = 3;</code>
+       * @param value The tid to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTid(int value) {
+        copyOnWrite();
+        instance.setTid(value);
+        return this;
+      }
+      /**
+       * <code>uint32 tid = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearTid() {
+        copyOnWrite();
+        instance.clearTid();
+        return this;
+      }
+
+      /**
+       * <code>uint32 priority = 4;</code>
+       * @return The priority.
+       */
+      @java.lang.Override
+      public int getPriority() {
+        return instance.getPriority();
+      }
+      /**
+       * <code>uint32 priority = 4;</code>
+       * @param value The priority to set.
+       * @return This builder for chaining.
+       */
+      public Builder setPriority(int value) {
+        copyOnWrite();
+        instance.setPriority(value);
+        return this;
+      }
+      /**
+       * <code>uint32 priority = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearPriority() {
+        copyOnWrite();
+        instance.clearPriority();
+        return this;
+      }
+
+      /**
+       * <code>string tag = 5;</code>
+       * @return The tag.
+       */
+      @java.lang.Override
+      public java.lang.String getTag() {
+        return instance.getTag();
+      }
+      /**
+       * <code>string tag = 5;</code>
+       * @return The bytes for tag.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getTagBytes() {
+        return instance.getTagBytes();
+      }
+      /**
+       * <code>string tag = 5;</code>
+       * @param value The tag to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTag(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setTag(value);
+        return this;
+      }
+      /**
+       * <code>string tag = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearTag() {
+        copyOnWrite();
+        instance.clearTag();
+        return this;
+      }
+      /**
+       * <code>string tag = 5;</code>
+       * @param value The bytes for tag to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTagBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setTagBytes(value);
+        return this;
+      }
+
+      /**
+       * <code>string message = 6;</code>
+       * @return The message.
+       */
+      @java.lang.Override
+      public java.lang.String getMessage() {
+        return instance.getMessage();
+      }
+      /**
+       * <code>string message = 6;</code>
+       * @return The bytes for message.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getMessageBytes() {
+        return instance.getMessageBytes();
+      }
+      /**
+       * <code>string message = 6;</code>
+       * @param value The message to set.
+       * @return This builder for chaining.
+       */
+      public Builder setMessage(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setMessage(value);
+        return this;
+      }
+      /**
+       * <code>string message = 6;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearMessage() {
+        copyOnWrite();
+        instance.clearMessage();
+        return this;
+      }
+      /**
+       * <code>string message = 6;</code>
+       * @param value The bytes for message to set.
+       * @return This builder for chaining.
+       */
+      public Builder setMessageBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setMessageBytes(value);
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:LogMessage)
+    }
+    @java.lang.Override
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new com.android.server.os.LinphoneTombstoneProtos.LogMessage();
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case BUILD_MESSAGE_INFO: {
+            java.lang.Object[] objects = new java.lang.Object[] {
+              "timestamp_",
+              "pid_",
+              "tid_",
+              "priority_",
+              "tag_",
+              "message_",
+            };
+            java.lang.String info =
+                "\u0000\u0006\u0000\u0000\u0001\u0006\u0006\u0000\u0000\u0000\u0001\u0208\u0002\u000b" +
+                "\u0003\u000b\u0004\u000b\u0005\u0208\u0006\u0208";
+            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          com.google.protobuf.Parser<com.android.server.os.LinphoneTombstoneProtos.LogMessage> parser = PARSER;
+          if (parser == null) {
+            synchronized (com.android.server.os.LinphoneTombstoneProtos.LogMessage.class) {
+              parser = PARSER;
+              if (parser == null) {
+                parser =
+                    new DefaultInstanceBasedParser<com.android.server.os.LinphoneTombstoneProtos.LogMessage>(
+                        DEFAULT_INSTANCE);
+                PARSER = parser;
+              }
+            }
+          }
+          return parser;
+      }
+      case GET_MEMOIZED_IS_INITIALIZED: {
+        return (byte) 1;
+      }
+      case SET_MEMOIZED_IS_INITIALIZED: {
+        return null;
+      }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:LogMessage)
+    private static final com.android.server.os.LinphoneTombstoneProtos.LogMessage DEFAULT_INSTANCE;
+    static {
+      LogMessage defaultInstance = new LogMessage();
+      // New instances are implicitly immutable so no need to make
+      // immutable.
+      DEFAULT_INSTANCE = defaultInstance;
+      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
+        LogMessage.class, defaultInstance);
+    }
+
+    public static com.android.server.os.LinphoneTombstoneProtos.LogMessage getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<LogMessage> PARSER;
+
+    public static com.google.protobuf.Parser<LogMessage> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
+  }
+
+
+  static {
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/wrappers/java/classes/org/linphone/core/tools/compatibility/DeviceUtils.java b/wrappers/java/classes/org/linphone/core/tools/compatibility/DeviceUtils.java
index d9bbf9d750..eb86c5536e 100644
--- a/wrappers/java/classes/org/linphone/core/tools/compatibility/DeviceUtils.java
+++ b/wrappers/java/classes/org/linphone/core/tools/compatibility/DeviceUtils.java
@@ -82,7 +82,21 @@ public class DeviceUtils {
 	
 	public static void logPreviousCrashesIfAny(Context context) {
 		if (Version.sdkAboveOrEqual(Version.API31_ANDROID_12)) {
-			DeviceUtils31.logPreviousCrashesIfAny(context);
+			boolean protobufDependencyFound = false;
+			try {
+				String className = "com.google.protobuf.GeneratedMessageLite";
+            	Class message = Class.forName(className);
+				protobufDependencyFound = true;
+			} catch (ClassNotFoundException e) {
+				Log.w("[Device Utils] Couldn't find class [com.google.protobuf.GeneratedMessageLite]");
+			} catch (Exception e) {
+				Log.w("[Device Utils] Couldn't load protobuf classes: " + e);
+			}
+
+			if (!protobufDependencyFound) {
+				Log.w("[Device Utils] Native crash tombstone can't be obtained, is app missing [implementation \"com.google.protobuf:protobuf-javalite:3.22.3\"] dependency?");
+			}
+			DeviceUtils31.logPreviousCrashesIfAny(context, protobufDependencyFound);
 		} else if (Version.sdkAboveOrEqual(Version.API30_ANDROID_11)) {
 			DeviceUtils30.logPreviousCrashesIfAny(context);
 		}
diff --git a/wrappers/java/classes/org/linphone/core/tools/compatibility/DeviceUtils30.java b/wrappers/java/classes/org/linphone/core/tools/compatibility/DeviceUtils30.java
index 83e13a677f..92d01058f6 100644
--- a/wrappers/java/classes/org/linphone/core/tools/compatibility/DeviceUtils30.java
+++ b/wrappers/java/classes/org/linphone/core/tools/compatibility/DeviceUtils30.java
@@ -39,12 +39,14 @@ import org.linphone.core.tools.Log;
 
 public class DeviceUtils30 {
     public static void logPreviousCrashesIfAny(Context context) {
+		Log.i("==== Fetching last five exit reasons if available ====");
 		ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
 		List<ApplicationExitInfo> exitInfos = activityManager.getHistoricalProcessExitReasons(null, 0, 5);
 
 		for (ApplicationExitInfo exitInfo : exitInfos) {
 			Log.i("==== Previous exit reason information dump ====");
-			Log.i("REASON=", getReasonAsString(exitInfo.getReason()));
+			Log.i("REASON=", getReasonAsString(exitInfo.getReason()) + "[" + exitInfo.getStatus() + "]");
+			Log.i("IMPORTANCE=", getImportanceAsString(exitInfo.getImportance()));
 			Log.i("TIMESTAMP=", getHumanReadableDateAndTimeFromTimestamp(exitInfo.getTimestamp()));
 			Log.i("DESCRIPTION=", exitInfo.getDescription());
 			if (exitInfo.getReason() == ApplicationExitInfo.REASON_ANR) {
@@ -70,6 +72,31 @@ public class DeviceUtils30 {
 		}
 	}
 
+	public static String getImportanceAsString(int importance) {
+		if (importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
+			return "Foreground";
+		} else if (importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE) {
+			return "Foreground Service";
+		} else if (importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_TOP_SLEEPING) {
+			return "Top sleeping";
+		} else if (importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE) {
+			return "Visible";
+		} else if (importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_PERCEPTIBLE) {
+			return "Perceptible";
+		} else if (importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_CANT_SAVE_STATE) {
+			return "Can't save state";
+		} else if (importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_SERVICE) {
+			return "Service";
+		} else if (importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_CACHED) {
+			return "Cached";
+		} else if (importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_GONE) {
+			return "Gone";
+		} else if (importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_TOP_SLEEPING) {
+			return "Top sleeping";
+		}
+		return "Unexpected: " + importance;
+	}
+
 	public static String getReasonAsString(int reason) {
 		if (reason == ApplicationExitInfo.REASON_UNKNOWN) {
 			return "Unknown";
diff --git a/wrappers/java/classes/org/linphone/core/tools/compatibility/DeviceUtils31.java b/wrappers/java/classes/org/linphone/core/tools/compatibility/DeviceUtils31.java
index 68fcc27cd8..d2f24712c6 100644
--- a/wrappers/java/classes/org/linphone/core/tools/compatibility/DeviceUtils31.java
+++ b/wrappers/java/classes/org/linphone/core/tools/compatibility/DeviceUtils31.java
@@ -29,6 +29,8 @@ import android.content.pm.PackageManager;
 import android.text.format.DateFormat;
 import android.Manifest;
 
+import com.android.server.os.LinphoneTombstoneProtos.Tombstone;
+
 import java.io.BufferedReader;
 import java.io.InputStream;
 import java.io.InputStreamReader;
@@ -41,22 +43,28 @@ import java.util.stream.Collectors;
 import org.linphone.core.tools.Log;
 
 public class DeviceUtils31 {
-    public static void logPreviousCrashesIfAny(Context context) {
+    public static void logPreviousCrashesIfAny(Context context, boolean printNativeCrashTombstone) {
+		Log.i("==== Fetching last five exit reasons if available ====");
 		ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
 		List<ApplicationExitInfo> exitInfos = activityManager.getHistoricalProcessExitReasons(null, 0, 5);
 
 		for (ApplicationExitInfo exitInfo : exitInfos) {
 			Log.i("==== Previous exit reason information dump ====");
-			Log.i("REASON=", DeviceUtils30.getReasonAsString(exitInfo.getReason()));
+			Log.i("REASON=", DeviceUtils30.getReasonAsString(exitInfo.getReason()) + "[" + exitInfo.getStatus() + "]");
+			Log.i("IMPORTANCE=", DeviceUtils30.getImportanceAsString(exitInfo.getImportance()));
 			Log.i("TIMESTAMP=", DeviceUtils30.getHumanReadableDateAndTimeFromTimestamp(exitInfo.getTimestamp()));
 			Log.i("DESCRIPTION=", exitInfo.getDescription());
 			if (exitInfo.getReason() == ApplicationExitInfo.REASON_ANR || exitInfo.getReason() == ApplicationExitInfo.REASON_CRASH_NATIVE) {
 				try {
 					InputStream inputStream = exitInfo.getTraceInputStream();
 					if (inputStream != null) {
-						if (exitInfo.getReason() == ApplicationExitInfo.REASON_CRASH_NATIVE) {
-							//Tombstone tombstone = Tombstone.parseFrom(inputStream);
-							//Log.w("TOMBSTONE=", tombstone.toString());
+						if (exitInfo.getReason() == ApplicationExitInfo.REASON_CRASH_NATIVE && printNativeCrashTombstone) {
+							try {
+								Tombstone tombstone = Tombstone.parseFrom(inputStream);
+								Log.w("TOMBSTONE=", tombstone.getAbortMessage());
+							} catch (Exception e) {
+								Log.e("Failed to obtain tombstone, is app missing [implementation \"com.google.protobuf:protobuf-javalite:3.22.3\"] dependency?");
+							}
 						} else {
 							BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
 							String trace = bufferedReader.lines().collect(Collectors.joining("\n"));
diff --git a/wrappers/java/proguard.mustache b/wrappers/java/proguard.mustache
index d6dd5cbfed..497027309e 100644
--- a/wrappers/java/proguard.mustache
+++ b/wrappers/java/proguard.mustache
@@ -40,4 +40,9 @@
 -keep class org.linphone.core.tools.** {*;}
 
 # Mediastreamer classes
--keep class org.linphone.mediastream.** {*;}
\ No newline at end of file
+-keep class org.linphone.mediastream.** {*;}
+
+# Protobuf classes
+-keep class com.google.protobuf.GeneratedMessageLite { *; }
+-keep class * extends com.google.protobuf.GeneratedMessageLite { *; }
+-keep class com.android.server.os.LinphoneTombstoneProtos {*;}
\ No newline at end of file
diff --git a/wrappers/java/tombstone.proto b/wrappers/java/tombstone.proto
new file mode 100644
index 0000000000..f9ba7c5a76
--- /dev/null
+++ b/wrappers/java/tombstone.proto
@@ -0,0 +1,180 @@
+//
+// Protobuf definition for Android tombstones.
+//
+// An app can get hold of these for any `REASON_CRASH_NATIVE` instance of
+// `android.app.ApplicationExitInfo`.
+//
+// https://developer.android.com/reference/android/app/ApplicationExitInfo#getTraceInputStream()
+//
+
+// Fetched from https://android.googlesource.com/platform/system/core/+/refs/heads/main/debuggerd/proto/tombstone.proto
+// Edited to change java_outer_classname as per https://issuetracker.google.com/issues/228208274 instructions
+// To re-generate, use protoc --java_out=lite:./classes/ ./tombstone.proto
+
+syntax = "proto3";
+option java_package = "com.android.server.os";
+option java_outer_classname = "LinphoneTombstoneProtos";
+// NOTE TO OEMS:
+// If you add custom fields to this proto, do not use numbers in the reserved range.
+message CrashDetail {
+  bytes name = 1;
+  bytes data = 2;
+}
+message Tombstone {
+  Architecture arch = 1;
+  string build_fingerprint = 2;
+  string revision = 3;
+  string timestamp = 4;
+  uint32 pid = 5;
+  uint32 tid = 6;
+  uint32 uid = 7;
+  string selinux_label = 8;
+  repeated string command_line = 9;
+  // Process uptime in seconds.
+  uint32 process_uptime = 20;
+  Signal signal_info = 10;
+  string abort_message = 14;
+  repeated CrashDetail crash_details = 21;
+  repeated Cause causes = 15;
+  map<uint32, Thread> threads = 16;
+  repeated MemoryMapping memory_mappings = 17;
+  repeated LogBuffer log_buffers = 18;
+  repeated FD open_fds = 19;
+  reserved 22 to 999;
+}
+enum Architecture {
+  ARM32 = 0;
+  ARM64 = 1;
+  X86 = 2;
+  X86_64 = 3;
+  RISCV64 = 4;
+  reserved 5 to 999;
+}
+message Signal {
+  int32 number = 1;
+  string name = 2;
+  int32 code = 3;
+  string code_name = 4;
+  bool has_sender = 5;
+  int32 sender_uid = 6;
+  int32 sender_pid = 7;
+  bool has_fault_address = 8;
+  uint64 fault_address = 9;
+  // Note, may or may not contain the dump of the actual memory contents. Currently, on arm64, we
+  // only include metadata, and not the contents.
+  MemoryDump fault_adjacent_metadata = 10;
+  reserved 11 to 999;
+}
+message HeapObject {
+  uint64 address = 1;
+  uint64 size = 2;
+  uint64 allocation_tid = 3;
+  repeated BacktraceFrame allocation_backtrace = 4;
+  uint64 deallocation_tid = 5;
+  repeated BacktraceFrame deallocation_backtrace = 6;
+}
+message MemoryError {
+  enum Tool {
+    GWP_ASAN = 0;
+    SCUDO = 1;
+    reserved 2 to 999;
+  }
+  Tool tool = 1;
+  enum Type {
+    UNKNOWN = 0;
+    USE_AFTER_FREE = 1;
+    DOUBLE_FREE = 2;
+    INVALID_FREE = 3;
+    BUFFER_OVERFLOW = 4;
+    BUFFER_UNDERFLOW = 5;
+    reserved 6 to 999;
+  }
+  Type type = 2;
+  oneof location {
+    HeapObject heap = 3;
+  }
+  reserved 4 to 999;
+}
+message Cause {
+  string human_readable = 1;
+  oneof details {
+    MemoryError memory_error = 2;
+  }
+  reserved 3 to 999;
+}
+message Register {
+  string name = 1;
+  uint64 u64 = 2;
+  reserved 3 to 999;
+}
+message Thread {
+  int32 id = 1;
+  string name = 2;
+  repeated Register registers = 3;
+  repeated string backtrace_note = 7;
+  repeated string unreadable_elf_files = 9;
+  repeated BacktraceFrame current_backtrace = 4;
+  repeated MemoryDump memory_dump = 5;
+  int64 tagged_addr_ctrl = 6;
+  int64 pac_enabled_keys = 8;
+  reserved 10 to 999;
+}
+message BacktraceFrame {
+  uint64 rel_pc = 1;
+  uint64 pc = 2;
+  uint64 sp = 3;
+  string function_name = 4;
+  uint64 function_offset = 5;
+  string file_name = 6;
+  uint64 file_map_offset = 7;
+  string build_id = 8;
+  reserved 9 to 999;
+}
+message ArmMTEMetadata {
+  // One memory tag per granule (e.g. every 16 bytes) of regular memory.
+  bytes memory_tags = 1;
+  reserved 2 to 999;
+}
+message MemoryDump {
+  string register_name = 1;
+  string mapping_name = 2;
+  uint64 begin_address = 3;
+  bytes memory = 4;
+  oneof metadata {
+    ArmMTEMetadata arm_mte_metadata = 6;
+  }
+  reserved 5, 7 to 999;
+}
+message MemoryMapping {
+  uint64 begin_address = 1;
+  uint64 end_address = 2;
+  uint64 offset = 3;
+  bool read = 4;
+  bool write = 5;
+  bool execute = 6;
+  string mapping_name = 7;
+  string build_id = 8;
+  uint64 load_bias = 9;
+  reserved 10 to 999;
+}
+message FD {
+  int32 fd = 1;
+  string path = 2;
+  string owner = 3;
+  uint64 tag = 4;
+  reserved 5 to 999;
+}
+message LogBuffer {
+  string name = 1;
+  repeated LogMessage logs = 2;
+  reserved 3 to 999;
+}
+message LogMessage {
+  string timestamp = 1;
+  uint32 pid = 2;
+  uint32 tid = 3;
+  uint32 priority = 4;
+  string tag = 5;
+  string message = 6;
+  reserved 7 to 999;
+}
\ No newline at end of file
-- 
GitLab