/FileExtraction/Java_unseen/InsightIM_Tok-Android/app/src/main/java/im/tox/tox4j/impl/jni/proto/ToxLog.java
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: ToxLog.proto

package im.tox.tox4j.impl.jni.proto;

public final class ToxLog {
  private ToxLog() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }
  public interface TimestampOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.tox4j.impl.jni.proto.Timestamp)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional int64 seconds = 1;</code>
     */
    long getSeconds();

    /**
     * <code>optional int32 nanos = 2;</code>
     */
    int getNanos();
  }
  /**
   * <pre>
   * struct timeval from &lt;sys/time.h&gt; representing a point in time.
   * </pre>
   *
   * Protobuf type {@code im.tox.tox4j.impl.jni.proto.Timestamp}
   */
  public  static final class Timestamp extends
      com.google.protobuf.GeneratedMessageLite<
          Timestamp, Timestamp.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.tox4j.impl.jni.proto.Timestamp)
      TimestampOrBuilder {
    private Timestamp() {
    }
    public static final int SECONDS_FIELD_NUMBER = 1;
    private long seconds_;
    /**
     * <code>optional int64 seconds = 1;</code>
     */
    public long getSeconds() {
      return seconds_;
    }
    /**
     * <code>optional int64 seconds = 1;</code>
     */
    private void setSeconds(long value) {
      
      seconds_ = value;
    }
    /**
     * <code>optional int64 seconds = 1;</code>
     */
    private void clearSeconds() {
      
      seconds_ = 0L;
    }

    public static final int NANOS_FIELD_NUMBER = 2;
    private int nanos_;
    /**
     * <code>optional int32 nanos = 2;</code>
     */
    public int getNanos() {
      return nanos_;
    }
    /**
     * <code>optional int32 nanos = 2;</code>
     */
    private void setNanos(int value) {
      
      nanos_ = value;
    }
    /**
     * <code>optional int32 nanos = 2;</code>
     */
    private void clearNanos() {
      
      nanos_ = 0;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (seconds_ != 0L) {
        output.writeInt64(1, seconds_);
      }
      if (nanos_ != 0) {
        output.writeInt32(2, nanos_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (seconds_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, seconds_);
      }
      if (nanos_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, nanos_);
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static Timestamp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static Timestamp 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 Timestamp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static Timestamp 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 Timestamp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static Timestamp 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 Timestamp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static Timestamp parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static Timestamp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static Timestamp 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 DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Timestamp prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * <pre>
     * struct timeval from &lt;sys/time.h&gt; representing a point in time.
     * </pre>
     *
     * Protobuf type {@code im.tox.tox4j.impl.jni.proto.Timestamp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          Timestamp, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.tox4j.impl.jni.proto.Timestamp)
        TimestampOrBuilder {
      // Construct using im.tox.tox4j.impl.jni.proto.ToxLog.Timestamp.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>optional int64 seconds = 1;</code>
       */
      public long getSeconds() {
        return instance.getSeconds();
      }
      /**
       * <code>optional int64 seconds = 1;</code>
       */
      public Builder setSeconds(long value) {
        copyOnWrite();
        instance.setSeconds(value);
        return this;
      }
      /**
       * <code>optional int64 seconds = 1;</code>
       */
      public Builder clearSeconds() {
        copyOnWrite();
        instance.clearSeconds();
        return this;
      }

      /**
       * <code>optional int32 nanos = 2;</code>
       */
      public int getNanos() {
        return instance.getNanos();
      }
      /**
       * <code>optional int32 nanos = 2;</code>
       */
      public Builder setNanos(int value) {
        copyOnWrite();
        instance.setNanos(value);
        return this;
      }
      /**
       * <code>optional int32 nanos = 2;</code>
       */
      public Builder clearNanos() {
        copyOnWrite();
        instance.clearNanos();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.tox4j.impl.jni.proto.Timestamp)
    }
    protected final Object dynamicMethod(
        MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new Timestamp();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          Timestamp other = (Timestamp) arg1;
          seconds_ = visitor.visitLong(seconds_ != 0L, seconds_,
              other.seconds_ != 0L, other.seconds_);
          nanos_ = visitor.visitInt(nanos_ != 0, nanos_,
              other.nanos_ != 0, other.nanos_);
          if (visitor == MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {

                  seconds_ = input.readInt64();
                  break;
                }
                case 16: {

                  nanos_ = input.readInt32();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (Timestamp.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.tox4j.impl.jni.proto.Timestamp)
    private static final Timestamp DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Timestamp();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static Timestamp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<Timestamp> PARSER;

    public static com.google.protobuf.Parser<Timestamp> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface StructOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.tox4j.impl.jni.proto.Struct)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>map&lt;string, .im.tox.tox4j.impl.jni.proto.Value&gt; members = 1;</code>
     */
    int getMembersCount();
    /**
     * <code>map&lt;string, .im.tox.tox4j.impl.jni.proto.Value&gt; members = 1;</code>
     */
    boolean containsMembers(String key);
    /**
     * Use {@link #getMembersMap()} instead.
     */
    @Deprecated
    java.util.Map<String, Value>
    getMembers();
    /**
     * <code>map&lt;string, .im.tox.tox4j.impl.jni.proto.Value&gt; members = 1;</code>
     */
    java.util.Map<String, Value>
    getMembersMap();
    /**
     * <code>map&lt;string, .im.tox.tox4j.impl.jni.proto.Value&gt; members = 1;</code>
     */

    Value getMembersOrDefault(String key, Value defaultValue);
    /**
     * <code>map&lt;string, .im.tox.tox4j.impl.jni.proto.Value&gt; members = 1;</code>
     */

    Value getMembersOrThrow(String key);
  }
  /**
   * <pre>
   * For aggregates, this contains the members. It can be a tree if the object
   * member itself is also an object.
   * </pre>
   *
   * Protobuf type {@code im.tox.tox4j.impl.jni.proto.Struct}
   */
  public  static final class Struct extends
      com.google.protobuf.GeneratedMessageLite<
          Struct, Struct.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.tox4j.impl.jni.proto.Struct)
      StructOrBuilder {
    private Struct() {
    }
    public static final int MEMBERS_FIELD_NUMBER = 1;
    private static final class MembersDefaultEntryHolder {
      static final com.google.protobuf.MapEntryLite<
          String, Value> defaultEntry =
              com.google.protobuf.MapEntryLite
              .<String, Value>newDefaultInstance(
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  Value.getDefaultInstance());
    }
    private com.google.protobuf.MapFieldLite<
        String, Value> members_ =
            com.google.protobuf.MapFieldLite.emptyMapField();
    private com.google.protobuf.MapFieldLite<String, Value>
    internalGetMembers() {
      return members_;
    }
    private com.google.protobuf.MapFieldLite<String, Value>
    internalGetMutableMembers() {
      if (!members_.isMutable()) {
        members_ = members_.mutableCopy();
      }
      return members_;
    }

    public int getMembersCount() {
      return internalGetMembers().size();
    }
    /**
     * <code>map&lt;string, .im.tox.tox4j.impl.jni.proto.Value&gt; members = 1;</code>
     */

    public boolean containsMembers(
        String key) {
      if (key == null) { throw new NullPointerException(); }
      return internalGetMembers().containsKey(key);
    }
    /**
     * Use {@link #getMembersMap()} instead.
     */
    @Deprecated
    public java.util.Map<String, Value> getMembers() {
      return getMembersMap();
    }
    /**
     * <code>map&lt;string, .im.tox.tox4j.impl.jni.proto.Value&gt; members = 1;</code>
     */

    public java.util.Map<String, Value> getMembersMap() {
      return java.util.Collections.unmodifiableMap(
          internalGetMembers());
    }
    /**
     * <code>map&lt;string, .im.tox.tox4j.impl.jni.proto.Value&gt; members = 1;</code>
     */

    public Value getMembersOrDefault(
        String key,
        Value defaultValue) {
      if (key == null) { throw new NullPointerException(); }
      java.util.Map<String, Value> map =
          internalGetMembers();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, .im.tox.tox4j.impl.jni.proto.Value&gt; members = 1;</code>
     */

    public Value getMembersOrThrow(
        String key) {
      if (key == null) { throw new NullPointerException(); }
      java.util.Map<String, Value> map =
          internalGetMembers();
      if (!map.containsKey(key)) {
        throw new IllegalArgumentException();
      }
      return map.get(key);
    }
    /**
     * <code>map&lt;string, .im.tox.tox4j.impl.jni.proto.Value&gt; members = 1;</code>
     */
    private java.util.Map<String, Value>
    getMutableMembersMap() {
      return internalGetMutableMembers();
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (java.util.Map.Entry<String, Value> entry
           : internalGetMembers().entrySet()) {
        MembersDefaultEntryHolder.defaultEntry.serializeTo(
            output, 1, entry.getKey(), entry.getValue());
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (java.util.Map.Entry<String, Value> entry
           : internalGetMembers().entrySet()) {
        size += MembersDefaultEntryHolder.defaultEntry.computeMessageSize(
          1, entry.getKey(), entry.getValue());
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static Struct parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static Struct 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 Struct parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static Struct 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 Struct parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static Struct 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 Struct parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static Struct parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static Struct parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static Struct 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 DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Struct prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * <pre>
     * For aggregates, this contains the members. It can be a tree if the object
     * member itself is also an object.
     * </pre>
     *
     * Protobuf type {@code im.tox.tox4j.impl.jni.proto.Struct}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          Struct, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.tox4j.impl.jni.proto.Struct)
        StructOrBuilder {
      // Construct using im.tox.tox4j.impl.jni.proto.ToxLog.Struct.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }



      public int getMembersCount() {
        return instance.getMembersMap().size();
      }
      /**
       * <code>map&lt;string, .im.tox.tox4j.impl.jni.proto.Value&gt; members = 1;</code>
       */

      public boolean containsMembers(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        return instance.getMembersMap().containsKey(key);
      }

      public Builder clearMembers() {
        copyOnWrite();
        instance.getMutableMembersMap().clear();
        return this;
      }
      /**
       * <code>map&lt;string, .im.tox.tox4j.impl.jni.proto.Value&gt; members = 1;</code>
       */

      public Builder removeMembers(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        copyOnWrite();
        instance.getMutableMembersMap().remove(key);
        return this;
      }
      /**
       * Use {@link #getMembersMap()} instead.
       */
      @Deprecated
      public java.util.Map<String, Value> getMembers() {
        return getMembersMap();
      }
      /**
       * <code>map&lt;string, .im.tox.tox4j.impl.jni.proto.Value&gt; members = 1;</code>
       */
      public java.util.Map<String, Value> getMembersMap() {
        return java.util.Collections.unmodifiableMap(
            instance.getMembersMap());
      }
      /**
       * <code>map&lt;string, .im.tox.tox4j.impl.jni.proto.Value&gt; members = 1;</code>
       */

      public Value getMembersOrDefault(
          String key,
          Value defaultValue) {
        if (key == null) { throw new NullPointerException(); }
        java.util.Map<String, Value> map =
            instance.getMembersMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <code>map&lt;string, .im.tox.tox4j.impl.jni.proto.Value&gt; members = 1;</code>
       */

      public Value getMembersOrThrow(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        java.util.Map<String, Value> map =
            instance.getMembersMap();
        if (!map.containsKey(key)) {
          throw new IllegalArgumentException();
        }
        return map.get(key);
      }
      /**
       * <code>map&lt;string, .im.tox.tox4j.impl.jni.proto.Value&gt; members = 1;</code>
       */
      public Builder putMembers(
          String key,
          Value value) {
        if (key == null) { throw new NullPointerException(); }
        if (value == null) { throw new NullPointerException(); }
        copyOnWrite();
        instance.getMutableMembersMap().put(key, value);
        return this;
      }
      /**
       * <code>map&lt;string, .im.tox.tox4j.impl.jni.proto.Value&gt; members = 1;</code>
       */
      public Builder putAllMembers(
          java.util.Map<String, Value> values) {
        copyOnWrite();
        instance.getMutableMembersMap().putAll(values);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.tox4j.impl.jni.proto.Struct)
    }
    protected final Object dynamicMethod(
        MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new Struct();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          members_.makeImmutable();
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          Struct other = (Struct) arg1;
          members_ = visitor.visitMap(
              members_, other.internalGetMembers());
          if (visitor == MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 10: {
                  if (!members_.isMutable()) {
                    members_ = members_.mutableCopy();
                  }
                  MembersDefaultEntryHolder.defaultEntry.parseInto(members_, input, extensionRegistry);  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (Struct.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.tox4j.impl.jni.proto.Struct)
    private static final Struct DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Struct();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static Struct getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<Struct> PARSER;

    public static com.google.protobuf.Parser<Struct> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface ValueOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.tox4j.impl.jni.proto.Value)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional uint32 truncated = 1;</code>
     */
    int getTruncated();

    /**
     * <code>optional sint64 v_sint64 = 2;</code>
     */
    long getVSint64();

    /**
     * <code>optional string v_string = 3;</code>
     */
    String getVString();
    /**
     * <code>optional string v_string = 3;</code>
     */
    com.google.protobuf.ByteString
        getVStringBytes();

    /**
     * <code>optional bytes v_bytes = 4;</code>
     */
    com.google.protobuf.ByteString getVBytes();

    /**
     * <code>optional .im.tox.tox4j.impl.jni.proto.Struct v_object = 5;</code>
     */
    Struct getVObject();

    public Value.VCase getVCase();
  }
  /**
   * <pre>
   * A single argument or return value.
   * </pre>
   *
   * Protobuf type {@code im.tox.tox4j.impl.jni.proto.Value}
   */
  public  static final class Value extends
      com.google.protobuf.GeneratedMessageLite<
          Value, Value.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.tox4j.impl.jni.proto.Value)
      ValueOrBuilder {
    private Value() {
    }
    private int vCase_ = 0;
    private Object v_;
    public enum VCase
        implements com.google.protobuf.Internal.EnumLite {
      V_SINT64(2),
      V_STRING(3),
      V_BYTES(4),
      V_OBJECT(5),
      V_NOT_SET(0);
      private final int value;
      private VCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @Deprecated
      public static VCase valueOf(int value) {
        return forNumber(value);
      }

      public static VCase forNumber(int value) {
        switch (value) {
          case 2: return V_SINT64;
          case 3: return V_STRING;
          case 4: return V_BYTES;
          case 5: return V_OBJECT;
          case 0: return V_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public VCase
    getVCase() {
      return VCase.forNumber(
          vCase_);
    }

    private void clearV() {
      vCase_ = 0;
      v_ = null;
    }

    public static final int TRUNCATED_FIELD_NUMBER = 1;
    private int truncated_;
    /**
     * <code>optional uint32 truncated = 1;</code>
     */
    public int getTruncated() {
      return truncated_;
    }
    /**
     * <code>optional uint32 truncated = 1;</code>
     */
    private void setTruncated(int value) {

      truncated_ = value;
    }
    /**
     * <code>optional uint32 truncated = 1;</code>
     */
    private void clearTruncated() {

      truncated_ = 0;
    }

    public static final int V_SINT64_FIELD_NUMBER = 2;
    /**
     * <code>optional sint64 v_sint64 = 2;</code>
     */
    public long getVSint64() {
      if (vCase_ == 2) {
        return (Long) v_;
      }
      return 0L;
    }
    /**
     * <code>optional sint64 v_sint64 = 2;</code>
     */
    private void setVSint64(long value) {
      vCase_ = 2;
      v_ = value;
    }
    /**
     * <code>optional sint64 v_sint64 = 2;</code>
     */
    private void clearVSint64() {
      if (vCase_ == 2) {
        vCase_ = 0;
        v_ = null;
      }
    }

    public static final int V_STRING_FIELD_NUMBER = 3;
    /**
     * <code>optional string v_string = 3;</code>
     */
    public String getVString() {
      String ref = "";
      if (vCase_ == 3) {
        ref = (String) v_;
      }
      return ref;
    }
    /**
     * <code>optional string v_string = 3;</code>
     */
    public com.google.protobuf.ByteString
        getVStringBytes() {
      String ref = "";
      if (vCase_ == 3) {
        ref = (String) v_;
      }
      return com.google.protobuf.ByteString.copyFromUtf8(ref);
    }
    /**
     * <code>optional string v_string = 3;</code>
     */
    private void setVString(
        String value) {
      if (value == null) {
    throw new NullPointerException();
  }
  vCase_ = 3;
      v_ = value;
    }
    /**
     * <code>optional string v_string = 3;</code>
     */
    private void clearVString() {
      if (vCase_ == 3) {
        vCase_ = 0;
        v_ = null;
      }
    }
    /**
     * <code>optional string v_string = 3;</code>
     */
    private void setVStringBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
      vCase_ = 3;
      v_ = value.toStringUtf8();
    }

    public static final int V_BYTES_FIELD_NUMBER = 4;
    /**
     * <code>optional bytes v_bytes = 4;</code>
     */
    public com.google.protobuf.ByteString getVBytes() {
      if (vCase_ == 4) {
        return (com.google.protobuf.ByteString) v_;
      }
      return com.google.protobuf.ByteString.EMPTY;
    }
    /**
     * <code>optional bytes v_bytes = 4;</code>
     */
    private void setVBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  vCase_ = 4;
      v_ = value;
    }
    /**
     * <code>optional bytes v_bytes = 4;</code>
     */
    private void clearVBytes() {
      if (vCase_ == 4) {
        vCase_ = 0;
        v_ = null;
      }
    }

    public static final int V_OBJECT_FIELD_NUMBER = 5;
    /**
     * <code>optional .im.tox.tox4j.impl.jni.proto.Struct v_object = 5;</code>
     */
    public Struct getVObject() {
      if (vCase_ == 5) {
         return (Struct) v_;
      }
      return Struct.getDefaultInstance();
    }
    /**
     * <code>optional .im.tox.tox4j.impl.jni.proto.Struct v_object = 5;</code>
     */
    private void setVObject(Struct value) {
      if (value == null) {
        throw new NullPointerException();
      }
      v_ = value;
      vCase_ = 5;
    }
    /**
     * <code>optional .im.tox.tox4j.impl.jni.proto.Struct v_object = 5;</code>
     */
    private void setVObject(
        Struct.Builder builderForValue) {
      v_ = builderForValue.build();
      vCase_ = 5;
    }
    /**
     * <code>optional .im.tox.tox4j.impl.jni.proto.Struct v_object = 5;</code>
     */
    private void mergeVObject(Struct value) {
      if (vCase_ == 5 &&
          v_ != Struct.getDefaultInstance()) {
        v_ = Struct.newBuilder((Struct) v_)
            .mergeFrom(value).buildPartial();
      } else {
        v_ = value;
      }
      vCase_ = 5;
    }
    /**
     * <code>optional .im.tox.tox4j.impl.jni.proto.Struct v_object = 5;</code>
     */
    private void clearVObject() {
      if (vCase_ == 5) {
        vCase_ = 0;
        v_ = null;
      }
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (truncated_ != 0) {
        output.writeUInt32(1, truncated_);
      }
      if (vCase_ == 2) {
        output.writeSInt64(
            2, (long)((Long) v_));
      }
      if (vCase_ == 3) {
        output.writeString(3, getVString());
      }
      if (vCase_ == 4) {
        output.writeBytes(
            4, (com.google.protobuf.ByteString)((com.google.protobuf.ByteString) v_));
      }
      if (vCase_ == 5) {
        output.writeMessage(5, (Struct) v_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (truncated_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, truncated_);
      }
      if (vCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeSInt64Size(
              2, (long)((Long) v_));
      }
      if (vCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(3, getVString());
      }
      if (vCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(
              4, (com.google.protobuf.ByteString)((com.google.protobuf.ByteString) v_));
      }
      if (vCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, (Struct) v_);
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static Value parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static Value 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 Value parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static Value 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 Value parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static Value 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 Value parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static Value parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static Value parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static Value 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 DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Value prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * <pre>
     * A single argument or return value.
     * </pre>
     *
     * Protobuf type {@code im.tox.tox4j.impl.jni.proto.Value}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          Value, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.tox4j.impl.jni.proto.Value)
        ValueOrBuilder {
      // Construct using im.tox.tox4j.impl.jni.proto.ToxLog.Value.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      public VCase
          getVCase() {
        return instance.getVCase();
      }

      public Builder clearV() {
        copyOnWrite();
        instance.clearV();
        return this;
      }


      /**
       * <code>optional uint32 truncated = 1;</code>
       */
      public int getTruncated() {
        return instance.getTruncated();
      }
      /**
       * <code>optional uint32 truncated = 1;</code>
       */
      public Builder setTruncated(int value) {
        copyOnWrite();
        instance.setTruncated(value);
        return this;
      }
      /**
       * <code>optional uint32 truncated = 1;</code>
       */
      public Builder clearTruncated() {
        copyOnWrite();
        instance.clearTruncated();
        return this;
      }

      /**
       * <code>optional sint64 v_sint64 = 2;</code>
       */
      public long getVSint64() {
        return instance.getVSint64();
      }
      /**
       * <code>optional sint64 v_sint64 = 2;</code>
       */
      public Builder setVSint64(long value) {
        copyOnWrite();
        instance.setVSint64(value);
        return this;
      }
      /**
       * <code>optional sint64 v_sint64 = 2;</code>
       */
      public Builder clearVSint64() {
        copyOnWrite();
        instance.clearVSint64();
        return this;
      }

      /**
       * <code>optional string v_string = 3;</code>
       */
      public String getVString() {
        return instance.getVString();
      }
      /**
       * <code>optional string v_string = 3;</code>
       */
      public com.google.protobuf.ByteString
          getVStringBytes() {
        return instance.getVStringBytes();
      }
      /**
       * <code>optional string v_string = 3;</code>
       */
      public Builder setVString(
          String value) {
        copyOnWrite();
        instance.setVString(value);
        return this;
      }
      /**
       * <code>optional string v_string = 3;</code>
       */
      public Builder clearVString() {
        copyOnWrite();
        instance.clearVString();
        return this;
      }
      /**
       * <code>optional string v_string = 3;</code>
       */
      public Builder setVStringBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setVStringBytes(value);
        return this;
      }

      /**
       * <code>optional bytes v_bytes = 4;</code>
       */
      public com.google.protobuf.ByteString getVBytes() {
        return instance.getVBytes();
      }
      /**
       * <code>optional bytes v_bytes = 4;</code>
       */
      public Builder setVBytes(com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setVBytes(value);
        return this;
      }
      /**
       * <code>optional bytes v_bytes = 4;</code>
       */
      public Builder clearVBytes() {
        copyOnWrite();
        instance.clearVBytes();
        return this;
      }

      /**
       * <code>optional .im.tox.tox4j.impl.jni.proto.Struct v_object = 5;</code>
       */
      public Struct getVObject() {
        return instance.getVObject();
      }
      /**
       * <code>optional .im.tox.tox4j.impl.jni.proto.Struct v_object = 5;</code>
       */
      public Builder setVObject(Struct value) {
        copyOnWrite();
        instance.setVObject(value);
        return this;
      }
      /**
       * <code>optional .im.tox.tox4j.impl.jni.proto.Struct v_object = 5;</code>
       */
      public Builder setVObject(
          Struct.Builder builderForValue) {
        copyOnWrite();
        instance.setVObject(builderForValue);
        return this;
      }
      /**
       * <code>optional .im.tox.tox4j.impl.jni.proto.Struct v_object = 5;</code>
       */
      public Builder mergeVObject(Struct value) {
        copyOnWrite();
        instance.mergeVObject(value);
        return this;
      }
      /**
       * <code>optional .im.tox.tox4j.impl.jni.proto.Struct v_object = 5;</code>
       */
      public Builder clearVObject() {
        copyOnWrite();
        instance.clearVObject();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.tox4j.impl.jni.proto.Value)
    }
    protected final Object dynamicMethod(
        MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new Value();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          Value other = (Value) arg1;
          truncated_ = visitor.visitInt(truncated_ != 0, truncated_,
              other.truncated_ != 0, other.truncated_);
          switch (other.getVCase()) {
            case V_SINT64: {
              v_ = visitor.visitOneofLong(
                  vCase_ == 2, v_, other.v_);
              break;
            }
            case V_STRING: {
              v_ = visitor.visitOneofString(
                 vCase_ == 3, v_, other.v_);
              break;
            }
            case V_BYTES: {
              v_ = visitor.visitOneofByteString(
                  vCase_ == 4, v_, other.v_);
              break;
            }
            case V_OBJECT: {
              v_ = visitor.visitOneofMessage(
                  vCase_ == 5,
                  v_,
                  other.v_);
              break;
            }
            case V_NOT_SET: {
              visitor.visitOneofNotSet(vCase_ != 0);
              break;
            }
          }
          if (visitor == MergeFromVisitor
              .INSTANCE) {
            if (other.vCase_ != 0) {
              vCase_ = other.vCase_;
            }
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {

                  truncated_ = input.readUInt32();
                  break;
                }
                case 16: {
                  vCase_ = 2;
                  v_ = input.readSInt64();
                  break;
                }
                case 26: {
                  String s = input.readStringRequireUtf8();
                  vCase_ = 3;
                  v_ = s;
                  break;
                }
                case 34: {
                  vCase_ = 4;
                  v_ = input.readBytes();
                  break;
                }
                case 42: {
                  Struct.Builder subBuilder = null;
                  if (vCase_ == 5) {
                    subBuilder = ((Struct) v_).toBuilder();
                  }
                  v_ =
                       input.readMessage(Struct.parser(), extensionRegistry);
                  if (subBuilder != null) {
                    subBuilder.mergeFrom((Struct) v_);
                    v_ = subBuilder.buildPartial();
                  }
                  vCase_ = 5;
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (Value.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.tox4j.impl.jni.proto.Value)
    private static final Value DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Value();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static Value getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<Value> PARSER;

    public static com.google.protobuf.Parser<Value> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface JniLogEntryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.tox4j.impl.jni.proto.JniLogEntry)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * The called function name or address.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    String getName();
    /**
     * <pre>
     * The called function name or address.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Instance number for the Tox or ToxAV instance.
     * </pre>
     *
     * <code>optional uint32 instance_number = 2;</code>
     */
    int getInstanceNumber();

    /**
     * <pre>
     * All the arguments to the function in order. These may contain out
     * parameters, in which case the result will not be logged.
     * TODO(iphydf): Infer out parameters from constness and log them anyway.
     * </pre>
     *
     * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
     */
    java.util.List<Value>
        getArgumentsList();
    /**
     * <pre>
     * All the arguments to the function in order. These may contain out
     * parameters, in which case the result will not be logged.
     * TODO(iphydf): Infer out parameters from constness and log them anyway.
     * </pre>
     *
     * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
     */
    Value getArguments(int index);
    /**
     * <pre>
     * All the arguments to the function in order. These may contain out
     * parameters, in which case the result will not be logged.
     * TODO(iphydf): Infer out parameters from constness and log them anyway.
     * </pre>
     *
     * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
     */
    int getArgumentsCount();

    /**
     * <pre>
     * Return value of the called function.
     * </pre>
     *
     * <code>optional .im.tox.tox4j.impl.jni.proto.Value result = 4;</code>
     */
    boolean hasResult();
    /**
     * <pre>
     * Return value of the called function.
     * </pre>
     *
     * <code>optional .im.tox.tox4j.impl.jni.proto.Value result = 4;</code>
     */
    Value getResult();

    /**
     * <pre>
     * Exact point in time (seconds and nanoseconds) when the function
     * began processing.
     * </pre>
     *
     * <code>optional .im.tox.tox4j.impl.jni.proto.Timestamp timestamp = 5;</code>
     */
    boolean hasTimestamp();
    /**
     * <pre>
     * Exact point in time (seconds and nanoseconds) when the function
     * began processing.
     * </pre>
     *
     * <code>optional .im.tox.tox4j.impl.jni.proto.Timestamp timestamp = 5;</code>
     */
    Timestamp getTimestamp();

    /**
     * <pre>
     * Time spent inside the actual native function in nanoseconds. This does
     * not include JNI overhead and the C++ code around it. It is purely the
     * time spent in the tox function.
     * </pre>
     *
     * <code>optional uint32 elapsed_nanos = 6;</code>
     */
    int getElapsedNanos();
  }
  /**
   * <pre>
   * A single log entry representing one native function call.
   * </pre>
   *
   * Protobuf type {@code im.tox.tox4j.impl.jni.proto.JniLogEntry}
   */
  public  static final class JniLogEntry extends
      com.google.protobuf.GeneratedMessageLite<
          JniLogEntry, JniLogEntry.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.tox4j.impl.jni.proto.JniLogEntry)
      JniLogEntryOrBuilder {
    private JniLogEntry() {
      name_ = "";
      arguments_ = emptyProtobufList();
    }
    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private String name_;
    /**
     * <pre>
     * The called function name or address.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public String getName() {
      return name_;
    }
    /**
     * <pre>
     * The called function name or address.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(name_);
    }
    /**
     * <pre>
     * The called function name or address.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    private void setName(
        String value) {
      if (value == null) {
    throw new NullPointerException();
  }

      name_ = value;
    }
    /**
     * <pre>
     * The called function name or address.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    private void clearName() {

      name_ = getDefaultInstance().getName();
    }
    /**
     * <pre>
     * The called function name or address.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    private void setNameBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

      name_ = value.toStringUtf8();
    }

    public static final int INSTANCE_NUMBER_FIELD_NUMBER = 2;
    private int instanceNumber_;
    /**
     * <pre>
     * Instance number for the Tox or ToxAV instance.
     * </pre>
     *
     * <code>optional uint32 instance_number = 2;</code>
     */
    public int getInstanceNumber() {
      return instanceNumber_;
    }
    /**
     * <pre>
     * Instance number for the Tox or ToxAV instance.
     * </pre>
     *
     * <code>optional uint32 instance_number = 2;</code>
     */
    private void setInstanceNumber(int value) {

      instanceNumber_ = value;
    }
    /**
     * <pre>
     * Instance number for the Tox or ToxAV instance.
     * </pre>
     *
     * <code>optional uint32 instance_number = 2;</code>
     */
    private void clearInstanceNumber() {

      instanceNumber_ = 0;
    }

    public static final int ARGUMENTS_FIELD_NUMBER = 3;
    private com.google.protobuf.Internal.ProtobufList<Value> arguments_;
    /**
     * <pre>
     * All the arguments to the function in order. These may contain out
     * parameters, in which case the result will not be logged.
     * TODO(iphydf): Infer out parameters from constness and log them anyway.
     * </pre>
     *
     * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
     */
    public java.util.List<Value> getArgumentsList() {
      return arguments_;
    }
    /**
     * <pre>
     * All the arguments to the function in order. These may contain out
     * parameters, in which case the result will not be logged.
     * TODO(iphydf): Infer out parameters from constness and log them anyway.
     * </pre>
     *
     * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
     */
    public java.util.List<? extends ValueOrBuilder>
        getArgumentsOrBuilderList() {
      return arguments_;
    }
    /**
     * <pre>
     * All the arguments to the function in order. These may contain out
     * parameters, in which case the result will not be logged.
     * TODO(iphydf): Infer out parameters from constness and log them anyway.
     * </pre>
     *
     * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
     */
    public int getArgumentsCount() {
      return arguments_.size();
    }
    /**
     * <pre>
     * All the arguments to the function in order. These may contain out
     * parameters, in which case the result will not be logged.
     * TODO(iphydf): Infer out parameters from constness and log them anyway.
     * </pre>
     *
     * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
     */
    public Value getArguments(int index) {
      return arguments_.get(index);
    }
    /**
     * <pre>
     * All the arguments to the function in order. These may contain out
     * parameters, in which case the result will not be logged.
     * TODO(iphydf): Infer out parameters from constness and log them anyway.
     * </pre>
     *
     * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
     */
    public ValueOrBuilder getArgumentsOrBuilder(
        int index) {
      return arguments_.get(index);
    }
    private void ensureArgumentsIsMutable() {
      if (!arguments_.isModifiable()) {
        arguments_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(arguments_);
       }
    }

    /**
     * <pre>
     * All the arguments to the function in order. These may contain out
     * parameters, in which case the result will not be logged.
     * TODO(iphydf): Infer out parameters from constness and log them anyway.
     * </pre>
     *
     * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
     */
    private void setArguments(
        int index, Value value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureArgumentsIsMutable();
      arguments_.set(index, value);
    }
    /**
     * <pre>
     * All the arguments to the function in order. These may contain out
     * parameters, in which case the result will not be logged.
     * TODO(iphydf): Infer out parameters from constness and log them anyway.
     * </pre>
     *
     * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
     */
    private void setArguments(
        int index, Value.Builder builderForValue) {
      ensureArgumentsIsMutable();
      arguments_.set(index, builderForValue.build());
    }
    /**
     * <pre>
     * All the arguments to the function in order. These may contain out
     * parameters, in which case the result will not be logged.
     * TODO(iphydf): Infer out parameters from constness and log them anyway.
     * </pre>
     *
     * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
     */
    private void addArguments(Value value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureArgumentsIsMutable();
      arguments_.add(value);
    }
    /**
     * <pre>
     * All the arguments to the function in order. These may contain out
     * parameters, in which case the result will not be logged.
     * TODO(iphydf): Infer out parameters from constness and log them anyway.
     * </pre>
     *
     * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
     */
    private void addArguments(
        int index, Value value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureArgumentsIsMutable();
      arguments_.add(index, value);
    }
    /**
     * <pre>
     * All the arguments to the function in order. These may contain out
     * parameters, in which case the result will not be logged.
     * TODO(iphydf): Infer out parameters from constness and log them anyway.
     * </pre>
     *
     * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
     */
    private void addArguments(
        Value.Builder builderForValue) {
      ensureArgumentsIsMutable();
      arguments_.add(builderForValue.build());
    }
    /**
     * <pre>
     * All the arguments to the function in order. These may contain out
     * parameters, in which case the result will not be logged.
     * TODO(iphydf): Infer out parameters from constness and log them anyway.
     * </pre>
     *
     * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
     */
    private void addArguments(
        int index, Value.Builder builderForValue) {
      ensureArgumentsIsMutable();
      arguments_.add(index, builderForValue.build());
    }
    /**
     * <pre>
     * All the arguments to the function in order. These may contain out
     * parameters, in which case the result will not be logged.
     * TODO(iphydf): Infer out parameters from constness and log them anyway.
     * </pre>
     *
     * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
     */
    private void addAllArguments(
        Iterable<? extends Value> values) {
      ensureArgumentsIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, arguments_);
    }
    /**
     * <pre>
     * All the arguments to the function in order. These may contain out
     * parameters, in which case the result will not be logged.
     * TODO(iphydf): Infer out parameters from constness and log them anyway.
     * </pre>
     *
     * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
     */
    private void clearArguments() {
      arguments_ = emptyProtobufList();
    }
    /**
     * <pre>
     * All the arguments to the function in order. These may contain out
     * parameters, in which case the result will not be logged.
     * TODO(iphydf): Infer out parameters from constness and log them anyway.
     * </pre>
     *
     * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
     */
    private void removeArguments(int index) {
      ensureArgumentsIsMutable();
      arguments_.remove(index);
    }

    public static final int RESULT_FIELD_NUMBER = 4;
    private Value result_;
    /**
     * <pre>
     * Return value of the called function.
     * </pre>
     *
     * <code>optional .im.tox.tox4j.impl.jni.proto.Value result = 4;</code>
     */
    public boolean hasResult() {
      return result_ != null;
    }
    /**
     * <pre>
     * Return value of the called function.
     * </pre>
     *
     * <code>optional .im.tox.tox4j.impl.jni.proto.Value result = 4;</code>
     */
    public Value getResult() {
      return result_ == null ? Value.getDefaultInstance() : result_;
    }
    /**
     * <pre>
     * Return value of the called function.
     * </pre>
     *
     * <code>optional .im.tox.tox4j.impl.jni.proto.Value result = 4;</code>
     */
    private void setResult(Value value) {
      if (value == null) {
        throw new NullPointerException();
      }
      result_ = value;

      }
    /**
     * <pre>
     * Return value of the called function.
     * </pre>
     *
     * <code>optional .im.tox.tox4j.impl.jni.proto.Value result = 4;</code>
     */
    private void setResult(
        Value.Builder builderForValue) {
      result_ = builderForValue.build();

    }
    /**
     * <pre>
     * Return value of the called function.
     * </pre>
     *
     * <code>optional .im.tox.tox4j.impl.jni.proto.Value result = 4;</code>
     */
    private void mergeResult(Value value) {
      if (result_ != null &&
          result_ != Value.getDefaultInstance()) {
        result_ =
          Value.newBuilder(result_).mergeFrom(value).buildPartial();
      } else {
        result_ = value;
      }

    }
    /**
     * <pre>
     * Return value of the called function.
     * </pre>
     *
     * <code>optional .im.tox.tox4j.impl.jni.proto.Value result = 4;</code>
     */
    private void clearResult() {  result_ = null;

    }

    public static final int TIMESTAMP_FIELD_NUMBER = 5;
    private Timestamp timestamp_;
    /**
     * <pre>
     * Exact point in time (seconds and nanoseconds) when the function
     * began processing.
     * </pre>
     *
     * <code>optional .im.tox.tox4j.impl.jni.proto.Timestamp timestamp = 5;</code>
     */
    public boolean hasTimestamp() {
      return timestamp_ != null;
    }
    /**
     * <pre>
     * Exact point in time (seconds and nanoseconds) when the function
     * began processing.
     * </pre>
     *
     * <code>optional .im.tox.tox4j.impl.jni.proto.Timestamp timestamp = 5;</code>
     */
    public Timestamp getTimestamp() {
      return timestamp_ == null ? Timestamp.getDefaultInstance() : timestamp_;
    }
    /**
     * <pre>
     * Exact point in time (seconds and nanoseconds) when the function
     * began processing.
     * </pre>
     *
     * <code>optional .im.tox.tox4j.impl.jni.proto.Timestamp timestamp = 5;</code>
     */
    private void setTimestamp(Timestamp value) {
      if (value == null) {
        throw new NullPointerException();
      }
      timestamp_ = value;

      }
    /**
     * <pre>
     * Exact point in time (seconds and nanoseconds) when the function
     * began processing.
     * </pre>
     *
     * <code>optional .im.tox.tox4j.impl.jni.proto.Timestamp timestamp = 5;</code>
     */
    private void setTimestamp(
        Timestamp.Builder builderForValue) {
      timestamp_ = builderForValue.build();

    }
    /**
     * <pre>
     * Exact point in time (seconds and nanoseconds) when the function
     * began processing.
     * </pre>
     *
     * <code>optional .im.tox.tox4j.impl.jni.proto.Timestamp timestamp = 5;</code>
     */
    private void mergeTimestamp(Timestamp value) {
      if (timestamp_ != null &&
          timestamp_ != Timestamp.getDefaultInstance()) {
        timestamp_ =
          Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
      } else {
        timestamp_ = value;
      }

    }
    /**
     * <pre>
     * Exact point in time (seconds and nanoseconds) when the function
     * began processing.
     * </pre>
     *
     * <code>optional .im.tox.tox4j.impl.jni.proto.Timestamp timestamp = 5;</code>
     */
    private void clearTimestamp() {  timestamp_ = null;

    }

    public static final int ELAPSED_NANOS_FIELD_NUMBER = 6;
    private int elapsedNanos_;
    /**
     * <pre>
     * Time spent inside the actual native function in nanoseconds. This does
     * not include JNI overhead and the C++ code around it. It is purely the
     * time spent in the tox function.
     * </pre>
     *
     * <code>optional uint32 elapsed_nanos = 6;</code>
     */
    public int getElapsedNanos() {
      return elapsedNanos_;
    }
    /**
     * <pre>
     * Time spent inside the actual native function in nanoseconds. This does
     * not include JNI overhead and the C++ code around it. It is purely the
     * time spent in the tox function.
     * </pre>
     *
     * <code>optional uint32 elapsed_nanos = 6;</code>
     */
    private void setElapsedNanos(int value) {

      elapsedNanos_ = value;
    }
    /**
     * <pre>
     * Time spent inside the actual native function in nanoseconds. This does
     * not include JNI overhead and the C++ code around it. It is purely the
     * time spent in the tox function.
     * </pre>
     *
     * <code>optional uint32 elapsed_nanos = 6;</code>
     */
    private void clearElapsedNanos() {

      elapsedNanos_ = 0;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!name_.isEmpty()) {
        output.writeString(1, getName());
      }
      if (instanceNumber_ != 0) {
        output.writeUInt32(2, instanceNumber_);
      }
      for (int i = 0; i < arguments_.size(); i++) {
        output.writeMessage(3, arguments_.get(i));
      }
      if (result_ != null) {
        output.writeMessage(4, getResult());
      }
      if (timestamp_ != null) {
        output.writeMessage(5, getTimestamp());
      }
      if (elapsedNanos_ != 0) {
        output.writeUInt32(6, elapsedNanos_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (!name_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(1, getName());
      }
      if (instanceNumber_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, instanceNumber_);
      }
      for (int i = 0; i < arguments_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, arguments_.get(i));
      }
      if (result_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getResult());
      }
      if (timestamp_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getTimestamp());
      }
      if (elapsedNanos_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(6, elapsedNanos_);
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static JniLogEntry parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static JniLogEntry 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 JniLogEntry parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static JniLogEntry 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 JniLogEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static JniLogEntry 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 JniLogEntry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static JniLogEntry parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static JniLogEntry parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static JniLogEntry 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 DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(JniLogEntry prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * <pre>
     * A single log entry representing one native function call.
     * </pre>
     *
     * Protobuf type {@code im.tox.tox4j.impl.jni.proto.JniLogEntry}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          JniLogEntry, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.tox4j.impl.jni.proto.JniLogEntry)
        JniLogEntryOrBuilder {
      // Construct using im.tox.tox4j.impl.jni.proto.ToxLog.JniLogEntry.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The called function name or address.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public String getName() {
        return instance.getName();
      }
      /**
       * <pre>
       * The called function name or address.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        return instance.getNameBytes();
      }
      /**
       * <pre>
       * The called function name or address.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setName(
          String value) {
        copyOnWrite();
        instance.setName(value);
        return this;
      }
      /**
       * <pre>
       * The called function name or address.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder clearName() {
        copyOnWrite();
        instance.clearName();
        return this;
      }
      /**
       * <pre>
       * The called function name or address.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setNameBytes(value);
        return this;
      }

      /**
       * <pre>
       * Instance number for the Tox or ToxAV instance.
       * </pre>
       *
       * <code>optional uint32 instance_number = 2;</code>
       */
      public int getInstanceNumber() {
        return instance.getInstanceNumber();
      }
      /**
       * <pre>
       * Instance number for the Tox or ToxAV instance.
       * </pre>
       *
       * <code>optional uint32 instance_number = 2;</code>
       */
      public Builder setInstanceNumber(int value) {
        copyOnWrite();
        instance.setInstanceNumber(value);
        return this;
      }
      /**
       * <pre>
       * Instance number for the Tox or ToxAV instance.
       * </pre>
       *
       * <code>optional uint32 instance_number = 2;</code>
       */
      public Builder clearInstanceNumber() {
        copyOnWrite();
        instance.clearInstanceNumber();
        return this;
      }

      /**
       * <pre>
       * All the arguments to the function in order. These may contain out
       * parameters, in which case the result will not be logged.
       * TODO(iphydf): Infer out parameters from constness and log them anyway.
       * </pre>
       *
       * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
       */
      public java.util.List<Value> getArgumentsList() {
        return java.util.Collections.unmodifiableList(
            instance.getArgumentsList());
      }
      /**
       * <pre>
       * All the arguments to the function in order. These may contain out
       * parameters, in which case the result will not be logged.
       * TODO(iphydf): Infer out parameters from constness and log them anyway.
       * </pre>
       *
       * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
       */
      public int getArgumentsCount() {
        return instance.getArgumentsCount();
      }/**
       * <pre>
       * All the arguments to the function in order. These may contain out
       * parameters, in which case the result will not be logged.
       * TODO(iphydf): Infer out parameters from constness and log them anyway.
       * </pre>
       *
       * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
       */
      public Value getArguments(int index) {
        return instance.getArguments(index);
      }
      /**
       * <pre>
       * All the arguments to the function in order. These may contain out
       * parameters, in which case the result will not be logged.
       * TODO(iphydf): Infer out parameters from constness and log them anyway.
       * </pre>
       *
       * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
       */
      public Builder setArguments(
          int index, Value value) {
        copyOnWrite();
        instance.setArguments(index, value);
        return this;
      }
      /**
       * <pre>
       * All the arguments to the function in order. These may contain out
       * parameters, in which case the result will not be logged.
       * TODO(iphydf): Infer out parameters from constness and log them anyway.
       * </pre>
       *
       * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
       */
      public Builder setArguments(
          int index, Value.Builder builderForValue) {
        copyOnWrite();
        instance.setArguments(index, builderForValue);
        return this;
      }
      /**
       * <pre>
       * All the arguments to the function in order. These may contain out
       * parameters, in which case the result will not be logged.
       * TODO(iphydf): Infer out parameters from constness and log them anyway.
       * </pre>
       *
       * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
       */
      public Builder addArguments(Value value) {
        copyOnWrite();
        instance.addArguments(value);
        return this;
      }
      /**
       * <pre>
       * All the arguments to the function in order. These may contain out
       * parameters, in which case the result will not be logged.
       * TODO(iphydf): Infer out parameters from constness and log them anyway.
       * </pre>
       *
       * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
       */
      public Builder addArguments(
          int index, Value value) {
        copyOnWrite();
        instance.addArguments(index, value);
        return this;
      }
      /**
       * <pre>
       * All the arguments to the function in order. These may contain out
       * parameters, in which case the result will not be logged.
       * TODO(iphydf): Infer out parameters from constness and log them anyway.
       * </pre>
       *
       * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
       */
      public Builder addArguments(
          Value.Builder builderForValue) {
        copyOnWrite();
        instance.addArguments(builderForValue);
        return this;
      }
      /**
       * <pre>
       * All the arguments to the function in order. These may contain out
       * parameters, in which case the result will not be logged.
       * TODO(iphydf): Infer out parameters from constness and log them anyway.
       * </pre>
       *
       * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
       */
      public Builder addArguments(
          int index, Value.Builder builderForValue) {
        copyOnWrite();
        instance.addArguments(index, builderForValue);
        return this;
      }
      /**
       * <pre>
       * All the arguments to the function in order. These may contain out
       * parameters, in which case the result will not be logged.
       * TODO(iphydf): Infer out parameters from constness and log them anyway.
       * </pre>
       *
       * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
       */
      public Builder addAllArguments(
          Iterable<? extends Value> values) {
        copyOnWrite();
        instance.addAllArguments(values);
        return this;
      }
      /**
       * <pre>
       * All the arguments to the function in order. These may contain out
       * parameters, in which case the result will not be logged.
       * TODO(iphydf): Infer out parameters from constness and log them anyway.
       * </pre>
       *
       * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
       */
      public Builder clearArguments() {
        copyOnWrite();
        instance.clearArguments();
        return this;
      }
      /**
       * <pre>
       * All the arguments to the function in order. These may contain out
       * parameters, in which case the result will not be logged.
       * TODO(iphydf): Infer out parameters from constness and log them anyway.
       * </pre>
       *
       * <code>repeated .im.tox.tox4j.impl.jni.proto.Value arguments = 3;</code>
       */
      public Builder removeArguments(int index) {
        copyOnWrite();
        instance.removeArguments(index);
        return this;
      }

      /**
       * <pre>
       * Return value of the called function.
       * </pre>
       *
       * <code>optional .im.tox.tox4j.impl.jni.proto.Value result = 4;</code>
       */
      public boolean hasResult() {
        return instance.hasResult();
      }
      /**
       * <pre>
       * Return value of the called function.
       * </pre>
       *
       * <code>optional .im.tox.tox4j.impl.jni.proto.Value result = 4;</code>
       */
      public Value getResult() {
        return instance.getResult();
      }
      /**
       * <pre>
       * Return value of the called function.
       * </pre>
       *
       * <code>optional .im.tox.tox4j.impl.jni.proto.Value result = 4;</code>
       */
      public Builder setResult(Value value) {
        copyOnWrite();
        instance.setResult(value);
        return this;
        }
      /**
       * <pre>
       * Return value of the called function.
       * </pre>
       *
       * <code>optional .im.tox.tox4j.impl.jni.proto.Value result = 4;</code>
       */
      public Builder setResult(
          Value.Builder builderForValue) {
        copyOnWrite();
        instance.setResult(builderForValue);
        return this;
      }
      /**
       * <pre>
       * Return value of the called function.
       * </pre>
       *
       * <code>optional .im.tox.tox4j.impl.jni.proto.Value result = 4;</code>
       */
      public Builder mergeResult(Value value) {
        copyOnWrite();
        instance.mergeResult(value);
        return this;
      }
      /**
       * <pre>
       * Return value of the called function.
       * </pre>
       *
       * <code>optional .im.tox.tox4j.impl.jni.proto.Value result = 4;</code>
       */
      public Builder clearResult() {  copyOnWrite();
        instance.clearResult();
        return this;
      }

      /**
       * <pre>
       * Exact point in time (seconds and nanoseconds) when the function
       * began processing.
       * </pre>
       *
       * <code>optional .im.tox.tox4j.impl.jni.proto.Timestamp timestamp = 5;</code>
       */
      public boolean hasTimestamp() {
        return instance.hasTimestamp();
      }
      /**
       * <pre>
       * Exact point in time (seconds and nanoseconds) when the function
       * began processing.
       * </pre>
       *
       * <code>optional .im.tox.tox4j.impl.jni.proto.Timestamp timestamp = 5;</code>
       */
      public Timestamp getTimestamp() {
        return instance.getTimestamp();
      }
      /**
       * <pre>
       * Exact point in time (seconds and nanoseconds) when the function
       * began processing.
       * </pre>
       *
       * <code>optional .im.tox.tox4j.impl.jni.proto.Timestamp timestamp = 5;</code>
       */
      public Builder setTimestamp(Timestamp value) {
        copyOnWrite();
        instance.setTimestamp(value);
        return this;
        }
      /**
       * <pre>
       * Exact point in time (seconds and nanoseconds) when the function
       * began processing.
       * </pre>
       *
       * <code>optional .im.tox.tox4j.impl.jni.proto.Timestamp timestamp = 5;</code>
       */
      public Builder setTimestamp(
          Timestamp.Builder builderForValue) {
        copyOnWrite();
        instance.setTimestamp(builderForValue);
        return this;
      }
      /**
       * <pre>
       * Exact point in time (seconds and nanoseconds) when the function
       * began processing.
       * </pre>
       *
       * <code>optional .im.tox.tox4j.impl.jni.proto.Timestamp timestamp = 5;</code>
       */
      public Builder mergeTimestamp(Timestamp value) {
        copyOnWrite();
        instance.mergeTimestamp(value);
        return this;
      }
      /**
       * <pre>
       * Exact point in time (seconds and nanoseconds) when the function
       * began processing.
       * </pre>
       *
       * <code>optional .im.tox.tox4j.impl.jni.proto.Timestamp timestamp = 5;</code>
       */
      public Builder clearTimestamp() {  copyOnWrite();
        instance.clearTimestamp();
        return this;
      }

      /**
       * <pre>
       * Time spent inside the actual native function in nanoseconds. This does
       * not include JNI overhead and the C++ code around it. It is purely the
       * time spent in the tox function.
       * </pre>
       *
       * <code>optional uint32 elapsed_nanos = 6;</code>
       */
      public int getElapsedNanos() {
        return instance.getElapsedNanos();
      }
      /**
       * <pre>
       * Time spent inside the actual native function in nanoseconds. This does
       * not include JNI overhead and the C++ code around it. It is purely the
       * time spent in the tox function.
       * </pre>
       *
       * <code>optional uint32 elapsed_nanos = 6;</code>
       */
      public Builder setElapsedNanos(int value) {
        copyOnWrite();
        instance.setElapsedNanos(value);
        return this;
      }
      /**
       * <pre>
       * Time spent inside the actual native function in nanoseconds. This does
       * not include JNI overhead and the C++ code around it. It is purely the
       * time spent in the tox function.
       * </pre>
       *
       * <code>optional uint32 elapsed_nanos = 6;</code>
       */
      public Builder clearElapsedNanos() {
        copyOnWrite();
        instance.clearElapsedNanos();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.tox4j.impl.jni.proto.JniLogEntry)
    }
    protected final Object dynamicMethod(
        MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new JniLogEntry();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          arguments_.makeImmutable();
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          JniLogEntry other = (JniLogEntry) arg1;
          name_ = visitor.visitString(!name_.isEmpty(), name_,
              !other.name_.isEmpty(), other.name_);
          instanceNumber_ = visitor.visitInt(instanceNumber_ != 0, instanceNumber_,
              other.instanceNumber_ != 0, other.instanceNumber_);
          arguments_= visitor.visitList(arguments_, other.arguments_);
          result_ = visitor.visitMessage(result_, other.result_);
          timestamp_ = visitor.visitMessage(timestamp_, other.timestamp_);
          elapsedNanos_ = visitor.visitInt(elapsedNanos_ != 0, elapsedNanos_,
              other.elapsedNanos_ != 0, other.elapsedNanos_);
          if (visitor == MergeFromVisitor
              .INSTANCE) {
            bitField0_ |= other.bitField0_;
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 10: {
                  String s = input.readStringRequireUtf8();

                  name_ = s;
                  break;
                }
                case 16: {

                  instanceNumber_ = input.readUInt32();
                  break;
                }
                case 26: {
                  if (!arguments_.isModifiable()) {
                    arguments_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(arguments_);
                  }
                  arguments_.add(
                      input.readMessage(Value.parser(), extensionRegistry));
                  break;
                }
                case 34: {
                  Value.Builder subBuilder = null;
                  if (result_ != null) {
                    subBuilder = result_.toBuilder();
                  }
                  result_ = input.readMessage(Value.parser(), extensionRegistry);
                  if (subBuilder != null) {
                    subBuilder.mergeFrom(result_);
                    result_ = subBuilder.buildPartial();
                  }

                  break;
                }
                case 42: {
                  Timestamp.Builder subBuilder = null;
                  if (timestamp_ != null) {
                    subBuilder = timestamp_.toBuilder();
                  }
                  timestamp_ = input.readMessage(Timestamp.parser(), extensionRegistry);
                  if (subBuilder != null) {
                    subBuilder.mergeFrom(timestamp_);
                    timestamp_ = subBuilder.buildPartial();
                  }

                  break;
                }
                case 48: {

                  elapsedNanos_ = input.readUInt32();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (JniLogEntry.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.tox4j.impl.jni.proto.JniLogEntry)
    private static final JniLogEntry DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new JniLogEntry();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static JniLogEntry getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<JniLogEntry> PARSER;

    public static com.google.protobuf.Parser<JniLogEntry> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface JniLogOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.tox4j.impl.jni.proto.JniLog)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
     */
    java.util.List<JniLogEntry>
        getEntriesList();
    /**
     * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
     */
    JniLogEntry getEntries(int index);
    /**
     * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
     */
    int getEntriesCount();
  }
  /**
   * <pre>
   * Top-level log containing all the log entries.
   * </pre>
   *
   * Protobuf type {@code im.tox.tox4j.impl.jni.proto.JniLog}
   */
  public  static final class JniLog extends
      com.google.protobuf.GeneratedMessageLite<
          JniLog, JniLog.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.tox4j.impl.jni.proto.JniLog)
      JniLogOrBuilder {
    private JniLog() {
      entries_ = emptyProtobufList();
    }
    public static final int ENTRIES_FIELD_NUMBER = 1;
    private com.google.protobuf.Internal.ProtobufList<JniLogEntry> entries_;
    /**
     * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
     */
    public java.util.List<JniLogEntry> getEntriesList() {
      return entries_;
    }
    /**
     * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
     */
    public java.util.List<? extends JniLogEntryOrBuilder>
        getEntriesOrBuilderList() {
      return entries_;
    }
    /**
     * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
     */
    public int getEntriesCount() {
      return entries_.size();
    }
    /**
     * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
     */
    public JniLogEntry getEntries(int index) {
      return entries_.get(index);
    }
    /**
     * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
     */
    public JniLogEntryOrBuilder getEntriesOrBuilder(
        int index) {
      return entries_.get(index);
    }
    private void ensureEntriesIsMutable() {
      if (!entries_.isModifiable()) {
        entries_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(entries_);
       }
    }

    /**
     * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
     */
    private void setEntries(
        int index, JniLogEntry value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureEntriesIsMutable();
      entries_.set(index, value);
    }
    /**
     * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
     */
    private void setEntries(
        int index, JniLogEntry.Builder builderForValue) {
      ensureEntriesIsMutable();
      entries_.set(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
     */
    private void addEntries(JniLogEntry value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureEntriesIsMutable();
      entries_.add(value);
    }
    /**
     * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
     */
    private void addEntries(
        int index, JniLogEntry value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureEntriesIsMutable();
      entries_.add(index, value);
    }
    /**
     * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
     */
    private void addEntries(
        JniLogEntry.Builder builderForValue) {
      ensureEntriesIsMutable();
      entries_.add(builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
     */
    private void addEntries(
        int index, JniLogEntry.Builder builderForValue) {
      ensureEntriesIsMutable();
      entries_.add(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
     */
    private void addAllEntries(
        Iterable<? extends JniLogEntry> values) {
      ensureEntriesIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, entries_);
    }
    /**
     * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
     */
    private void clearEntries() {
      entries_ = emptyProtobufList();
    }
    /**
     * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
     */
    private void removeEntries(int index) {
      ensureEntriesIsMutable();
      entries_.remove(index);
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < entries_.size(); i++) {
        output.writeMessage(1, entries_.get(i));
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < entries_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, entries_.get(i));
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static JniLog parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static JniLog 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 JniLog parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static JniLog 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 JniLog parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static JniLog 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 JniLog parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static JniLog parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static JniLog parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static JniLog 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 DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(JniLog prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * <pre>
     * Top-level log containing all the log entries.
     * </pre>
     *
     * Protobuf type {@code im.tox.tox4j.impl.jni.proto.JniLog}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          JniLog, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.tox4j.impl.jni.proto.JniLog)
        JniLogOrBuilder {
      // Construct using im.tox.tox4j.impl.jni.proto.ToxLog.JniLog.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
       */
      public java.util.List<JniLogEntry> getEntriesList() {
        return java.util.Collections.unmodifiableList(
            instance.getEntriesList());
      }
      /**
       * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
       */
      public int getEntriesCount() {
        return instance.getEntriesCount();
      }/**
       * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
       */
      public JniLogEntry getEntries(int index) {
        return instance.getEntries(index);
      }
      /**
       * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
       */
      public Builder setEntries(
          int index, JniLogEntry value) {
        copyOnWrite();
        instance.setEntries(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
       */
      public Builder setEntries(
          int index, JniLogEntry.Builder builderForValue) {
        copyOnWrite();
        instance.setEntries(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
       */
      public Builder addEntries(JniLogEntry value) {
        copyOnWrite();
        instance.addEntries(value);
        return this;
      }
      /**
       * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
       */
      public Builder addEntries(
          int index, JniLogEntry value) {
        copyOnWrite();
        instance.addEntries(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
       */
      public Builder addEntries(
          JniLogEntry.Builder builderForValue) {
        copyOnWrite();
        instance.addEntries(builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
       */
      public Builder addEntries(
          int index, JniLogEntry.Builder builderForValue) {
        copyOnWrite();
        instance.addEntries(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
       */
      public Builder addAllEntries(
          Iterable<? extends JniLogEntry> values) {
        copyOnWrite();
        instance.addAllEntries(values);
        return this;
      }
      /**
       * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
       */
      public Builder clearEntries() {
        copyOnWrite();
        instance.clearEntries();
        return this;
      }
      /**
       * <code>repeated .im.tox.tox4j.impl.jni.proto.JniLogEntry entries = 1;</code>
       */
      public Builder removeEntries(int index) {
        copyOnWrite();
        instance.removeEntries(index);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.tox4j.impl.jni.proto.JniLog)
    }
    protected final Object dynamicMethod(
        MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new JniLog();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          entries_.makeImmutable();
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          JniLog other = (JniLog) arg1;
          entries_= visitor.visitList(entries_, other.entries_);
          if (visitor == MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 10: {
                  if (!entries_.isModifiable()) {
                    entries_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(entries_);
                  }
                  entries_.add(
                      input.readMessage(JniLogEntry.parser(), extensionRegistry));
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (JniLog.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.tox4j.impl.jni.proto.JniLog)
    private static final JniLog DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new JniLog();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static JniLog getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<JniLog> PARSER;

    public static com.google.protobuf.Parser<JniLog> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }


  static {
  }

  // @@protoc_insertion_point(outer_class_scope)
}
