All Downloads are FREE. Search and download functionalities are using the official Maven repository.

uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos Maven / Gradle / Ivy

Go to download

Genome Damage and Stability Centre SMLM Package Software for single molecule localisation microscopy (SMLM)

The newest version!
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: uk/ac/sussex/gdsc/smlm/data/config/molecule.proto

package uk.ac.sussex.gdsc.smlm.data.config;

public final class MoleculeProtos {
  private MoleculeProtos() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface AtomOrBuilder extends
      // @@protoc_insertion_point(interface_extends:uk.ac.sussex.gdsc.smlm.data.config.Atom)
      com.google.protobuf.MessageOrBuilder {

    /**
     * double mass = 1;
     * @return The mass.
     */
    double getMass();

    /**
     * double x = 2;
     * @return The x.
     */
    double getX();

    /**
     * double y = 3;
     * @return The y.
     */
    double getY();

    /**
     * double z = 4;
     * @return The z.
     */
    double getZ();
  }
  /**
   * Protobuf type {@code uk.ac.sussex.gdsc.smlm.data.config.Atom}
   */
  public static final class Atom extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:uk.ac.sussex.gdsc.smlm.data.config.Atom)
      AtomOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Atom.newBuilder() to construct.
    private Atom(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private Atom() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Atom();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.internal_static_uk_ac_sussex_gdsc_smlm_data_config_Atom_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.internal_static_uk_ac_sussex_gdsc_smlm_data_config_Atom_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom.class, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom.Builder.class);
    }

    public static final int MASS_FIELD_NUMBER = 1;
    private double mass_ = 0D;
    /**
     * double mass = 1;
     * @return The mass.
     */
    @java.lang.Override
    public double getMass() {
      return mass_;
    }

    public static final int X_FIELD_NUMBER = 2;
    private double x_ = 0D;
    /**
     * double x = 2;
     * @return The x.
     */
    @java.lang.Override
    public double getX() {
      return x_;
    }

    public static final int Y_FIELD_NUMBER = 3;
    private double y_ = 0D;
    /**
     * double y = 3;
     * @return The y.
     */
    @java.lang.Override
    public double getY() {
      return y_;
    }

    public static final int Z_FIELD_NUMBER = 4;
    private double z_ = 0D;
    /**
     * double z = 4;
     * @return The z.
     */
    @java.lang.Override
    public double getZ() {
      return z_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (java.lang.Double.doubleToRawLongBits(mass_) != 0) {
        output.writeDouble(1, mass_);
      }
      if (java.lang.Double.doubleToRawLongBits(x_) != 0) {
        output.writeDouble(2, x_);
      }
      if (java.lang.Double.doubleToRawLongBits(y_) != 0) {
        output.writeDouble(3, y_);
      }
      if (java.lang.Double.doubleToRawLongBits(z_) != 0) {
        output.writeDouble(4, z_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (java.lang.Double.doubleToRawLongBits(mass_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(1, mass_);
      }
      if (java.lang.Double.doubleToRawLongBits(x_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(2, x_);
      }
      if (java.lang.Double.doubleToRawLongBits(y_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(3, y_);
      }
      if (java.lang.Double.doubleToRawLongBits(z_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(4, z_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom)) {
        return super.equals(obj);
      }
      uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom other = (uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom) obj;

      if (java.lang.Double.doubleToLongBits(getMass())
          != java.lang.Double.doubleToLongBits(
              other.getMass())) return false;
      if (java.lang.Double.doubleToLongBits(getX())
          != java.lang.Double.doubleToLongBits(
              other.getX())) return false;
      if (java.lang.Double.doubleToLongBits(getY())
          != java.lang.Double.doubleToLongBits(
              other.getY())) return false;
      if (java.lang.Double.doubleToLongBits(getZ())
          != java.lang.Double.doubleToLongBits(
              other.getZ())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MASS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getMass()));
      hash = (37 * hash) + X_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getX()));
      hash = (37 * hash) + Y_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getY()));
      hash = (37 * hash) + Z_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getZ()));
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code uk.ac.sussex.gdsc.smlm.data.config.Atom}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:uk.ac.sussex.gdsc.smlm.data.config.Atom)
        uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.AtomOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.internal_static_uk_ac_sussex_gdsc_smlm_data_config_Atom_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.internal_static_uk_ac_sussex_gdsc_smlm_data_config_Atom_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom.class, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom.Builder.class);
      }

      // Construct using uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        mass_ = 0D;
        x_ = 0D;
        y_ = 0D;
        z_ = 0D;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.internal_static_uk_ac_sussex_gdsc_smlm_data_config_Atom_descriptor;
      }

      @java.lang.Override
      public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom getDefaultInstanceForType() {
        return uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom.getDefaultInstance();
      }

      @java.lang.Override
      public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom build() {
        uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom buildPartial() {
        uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom result = new uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.mass_ = mass_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.x_ = x_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.y_ = y_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.z_ = z_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom) {
          return mergeFrom((uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom other) {
        if (other == uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom.getDefaultInstance()) return this;
        if (other.getMass() != 0D) {
          setMass(other.getMass());
        }
        if (other.getX() != 0D) {
          setX(other.getX());
        }
        if (other.getY() != 0D) {
          setY(other.getY());
        }
        if (other.getZ() != 0D) {
          setZ(other.getZ());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 9: {
                mass_ = input.readDouble();
                bitField0_ |= 0x00000001;
                break;
              } // case 9
              case 17: {
                x_ = input.readDouble();
                bitField0_ |= 0x00000002;
                break;
              } // case 17
              case 25: {
                y_ = input.readDouble();
                bitField0_ |= 0x00000004;
                break;
              } // case 25
              case 33: {
                z_ = input.readDouble();
                bitField0_ |= 0x00000008;
                break;
              } // case 33
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private double mass_ ;
      /**
       * double mass = 1;
       * @return The mass.
       */
      @java.lang.Override
      public double getMass() {
        return mass_;
      }
      /**
       * double mass = 1;
       * @param value The mass to set.
       * @return This builder for chaining.
       */
      public Builder setMass(double value) {

        mass_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * double mass = 1;
       * @return This builder for chaining.
       */
      public Builder clearMass() {
        bitField0_ = (bitField0_ & ~0x00000001);
        mass_ = 0D;
        onChanged();
        return this;
      }

      private double x_ ;
      /**
       * double x = 2;
       * @return The x.
       */
      @java.lang.Override
      public double getX() {
        return x_;
      }
      /**
       * double x = 2;
       * @param value The x to set.
       * @return This builder for chaining.
       */
      public Builder setX(double value) {

        x_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * double x = 2;
       * @return This builder for chaining.
       */
      public Builder clearX() {
        bitField0_ = (bitField0_ & ~0x00000002);
        x_ = 0D;
        onChanged();
        return this;
      }

      private double y_ ;
      /**
       * double y = 3;
       * @return The y.
       */
      @java.lang.Override
      public double getY() {
        return y_;
      }
      /**
       * double y = 3;
       * @param value The y to set.
       * @return This builder for chaining.
       */
      public Builder setY(double value) {

        y_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * double y = 3;
       * @return This builder for chaining.
       */
      public Builder clearY() {
        bitField0_ = (bitField0_ & ~0x00000004);
        y_ = 0D;
        onChanged();
        return this;
      }

      private double z_ ;
      /**
       * double z = 4;
       * @return The z.
       */
      @java.lang.Override
      public double getZ() {
        return z_;
      }
      /**
       * double z = 4;
       * @param value The z to set.
       * @return This builder for chaining.
       */
      public Builder setZ(double value) {

        z_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * double z = 4;
       * @return This builder for chaining.
       */
      public Builder clearZ() {
        bitField0_ = (bitField0_ & ~0x00000008);
        z_ = 0D;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:uk.ac.sussex.gdsc.smlm.data.config.Atom)
    }

    // @@protoc_insertion_point(class_scope:uk.ac.sussex.gdsc.smlm.data.config.Atom)
    private static final uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom();
    }

    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public Atom parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MoleculeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:uk.ac.sussex.gdsc.smlm.data.config.Molecule)
      com.google.protobuf.MessageOrBuilder {

    /**
     * double fraction = 1;
     * @return The fraction.
     */
    double getFraction();

    /**
     * double diffusion_rate = 2;
     * @return The diffusionRate.
     */
    double getDiffusionRate();

    /**
     * string diffusion_type = 3;
     * @return The diffusionType.
     */
    java.lang.String getDiffusionType();
    /**
     * string diffusion_type = 3;
     * @return The bytes for diffusionType.
     */
    com.google.protobuf.ByteString
        getDiffusionTypeBytes();

    /**
     * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
     */
    java.util.List 
        getAtomList();
    /**
     * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
     */
    uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom getAtom(int index);
    /**
     * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
     */
    int getAtomCount();
    /**
     * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
     */
    java.util.List 
        getAtomOrBuilderList();
    /**
     * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
     */
    uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.AtomOrBuilder getAtomOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code uk.ac.sussex.gdsc.smlm.data.config.Molecule}
   */
  public static final class Molecule extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:uk.ac.sussex.gdsc.smlm.data.config.Molecule)
      MoleculeOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Molecule.newBuilder() to construct.
    private Molecule(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private Molecule() {
      diffusionType_ = "";
      atom_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Molecule();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.internal_static_uk_ac_sussex_gdsc_smlm_data_config_Molecule_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.internal_static_uk_ac_sussex_gdsc_smlm_data_config_Molecule_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule.class, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule.Builder.class);
    }

    public static final int FRACTION_FIELD_NUMBER = 1;
    private double fraction_ = 0D;
    /**
     * double fraction = 1;
     * @return The fraction.
     */
    @java.lang.Override
    public double getFraction() {
      return fraction_;
    }

    public static final int DIFFUSION_RATE_FIELD_NUMBER = 2;
    private double diffusionRate_ = 0D;
    /**
     * double diffusion_rate = 2;
     * @return The diffusionRate.
     */
    @java.lang.Override
    public double getDiffusionRate() {
      return diffusionRate_;
    }

    public static final int DIFFUSION_TYPE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object diffusionType_ = "";
    /**
     * string diffusion_type = 3;
     * @return The diffusionType.
     */
    @java.lang.Override
    public java.lang.String getDiffusionType() {
      java.lang.Object ref = diffusionType_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        diffusionType_ = s;
        return s;
      }
    }
    /**
     * string diffusion_type = 3;
     * @return The bytes for diffusionType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDiffusionTypeBytes() {
      java.lang.Object ref = diffusionType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        diffusionType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ATOM_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private java.util.List atom_;
    /**
     * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
     */
    @java.lang.Override
    public java.util.List getAtomList() {
      return atom_;
    }
    /**
     * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
     */
    @java.lang.Override
    public java.util.List 
        getAtomOrBuilderList() {
      return atom_;
    }
    /**
     * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
     */
    @java.lang.Override
    public int getAtomCount() {
      return atom_.size();
    }
    /**
     * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
     */
    @java.lang.Override
    public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom getAtom(int index) {
      return atom_.get(index);
    }
    /**
     * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
     */
    @java.lang.Override
    public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.AtomOrBuilder getAtomOrBuilder(
        int index) {
      return atom_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (java.lang.Double.doubleToRawLongBits(fraction_) != 0) {
        output.writeDouble(1, fraction_);
      }
      if (java.lang.Double.doubleToRawLongBits(diffusionRate_) != 0) {
        output.writeDouble(2, diffusionRate_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(diffusionType_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, diffusionType_);
      }
      for (int i = 0; i < atom_.size(); i++) {
        output.writeMessage(4, atom_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (java.lang.Double.doubleToRawLongBits(fraction_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(1, fraction_);
      }
      if (java.lang.Double.doubleToRawLongBits(diffusionRate_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(2, diffusionRate_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(diffusionType_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, diffusionType_);
      }
      for (int i = 0; i < atom_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, atom_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule)) {
        return super.equals(obj);
      }
      uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule other = (uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule) obj;

      if (java.lang.Double.doubleToLongBits(getFraction())
          != java.lang.Double.doubleToLongBits(
              other.getFraction())) return false;
      if (java.lang.Double.doubleToLongBits(getDiffusionRate())
          != java.lang.Double.doubleToLongBits(
              other.getDiffusionRate())) return false;
      if (!getDiffusionType()
          .equals(other.getDiffusionType())) return false;
      if (!getAtomList()
          .equals(other.getAtomList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + FRACTION_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getFraction()));
      hash = (37 * hash) + DIFFUSION_RATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getDiffusionRate()));
      hash = (37 * hash) + DIFFUSION_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getDiffusionType().hashCode();
      if (getAtomCount() > 0) {
        hash = (37 * hash) + ATOM_FIELD_NUMBER;
        hash = (53 * hash) + getAtomList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code uk.ac.sussex.gdsc.smlm.data.config.Molecule}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:uk.ac.sussex.gdsc.smlm.data.config.Molecule)
        uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.MoleculeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.internal_static_uk_ac_sussex_gdsc_smlm_data_config_Molecule_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.internal_static_uk_ac_sussex_gdsc_smlm_data_config_Molecule_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule.class, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule.Builder.class);
      }

      // Construct using uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        fraction_ = 0D;
        diffusionRate_ = 0D;
        diffusionType_ = "";
        if (atomBuilder_ == null) {
          atom_ = java.util.Collections.emptyList();
        } else {
          atom_ = null;
          atomBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.internal_static_uk_ac_sussex_gdsc_smlm_data_config_Molecule_descriptor;
      }

      @java.lang.Override
      public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule getDefaultInstanceForType() {
        return uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule.getDefaultInstance();
      }

      @java.lang.Override
      public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule build() {
        uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule buildPartial() {
        uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule result = new uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule result) {
        if (atomBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)) {
            atom_ = java.util.Collections.unmodifiableList(atom_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.atom_ = atom_;
        } else {
          result.atom_ = atomBuilder_.build();
        }
      }

      private void buildPartial0(uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.fraction_ = fraction_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.diffusionRate_ = diffusionRate_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.diffusionType_ = diffusionType_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule) {
          return mergeFrom((uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule other) {
        if (other == uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule.getDefaultInstance()) return this;
        if (other.getFraction() != 0D) {
          setFraction(other.getFraction());
        }
        if (other.getDiffusionRate() != 0D) {
          setDiffusionRate(other.getDiffusionRate());
        }
        if (!other.getDiffusionType().isEmpty()) {
          diffusionType_ = other.diffusionType_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (atomBuilder_ == null) {
          if (!other.atom_.isEmpty()) {
            if (atom_.isEmpty()) {
              atom_ = other.atom_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureAtomIsMutable();
              atom_.addAll(other.atom_);
            }
            onChanged();
          }
        } else {
          if (!other.atom_.isEmpty()) {
            if (atomBuilder_.isEmpty()) {
              atomBuilder_.dispose();
              atomBuilder_ = null;
              atom_ = other.atom_;
              bitField0_ = (bitField0_ & ~0x00000008);
              atomBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getAtomFieldBuilder() : null;
            } else {
              atomBuilder_.addAllMessages(other.atom_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 9: {
                fraction_ = input.readDouble();
                bitField0_ |= 0x00000001;
                break;
              } // case 9
              case 17: {
                diffusionRate_ = input.readDouble();
                bitField0_ |= 0x00000002;
                break;
              } // case 17
              case 26: {
                diffusionType_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom m =
                    input.readMessage(
                        uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom.parser(),
                        extensionRegistry);
                if (atomBuilder_ == null) {
                  ensureAtomIsMutable();
                  atom_.add(m);
                } else {
                  atomBuilder_.addMessage(m);
                }
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private double fraction_ ;
      /**
       * double fraction = 1;
       * @return The fraction.
       */
      @java.lang.Override
      public double getFraction() {
        return fraction_;
      }
      /**
       * double fraction = 1;
       * @param value The fraction to set.
       * @return This builder for chaining.
       */
      public Builder setFraction(double value) {

        fraction_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * double fraction = 1;
       * @return This builder for chaining.
       */
      public Builder clearFraction() {
        bitField0_ = (bitField0_ & ~0x00000001);
        fraction_ = 0D;
        onChanged();
        return this;
      }

      private double diffusionRate_ ;
      /**
       * double diffusion_rate = 2;
       * @return The diffusionRate.
       */
      @java.lang.Override
      public double getDiffusionRate() {
        return diffusionRate_;
      }
      /**
       * double diffusion_rate = 2;
       * @param value The diffusionRate to set.
       * @return This builder for chaining.
       */
      public Builder setDiffusionRate(double value) {

        diffusionRate_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * double diffusion_rate = 2;
       * @return This builder for chaining.
       */
      public Builder clearDiffusionRate() {
        bitField0_ = (bitField0_ & ~0x00000002);
        diffusionRate_ = 0D;
        onChanged();
        return this;
      }

      private java.lang.Object diffusionType_ = "";
      /**
       * string diffusion_type = 3;
       * @return The diffusionType.
       */
      public java.lang.String getDiffusionType() {
        java.lang.Object ref = diffusionType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          diffusionType_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string diffusion_type = 3;
       * @return The bytes for diffusionType.
       */
      public com.google.protobuf.ByteString
          getDiffusionTypeBytes() {
        java.lang.Object ref = diffusionType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          diffusionType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string diffusion_type = 3;
       * @param value The diffusionType to set.
       * @return This builder for chaining.
       */
      public Builder setDiffusionType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        diffusionType_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * string diffusion_type = 3;
       * @return This builder for chaining.
       */
      public Builder clearDiffusionType() {
        diffusionType_ = getDefaultInstance().getDiffusionType();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * string diffusion_type = 3;
       * @param value The bytes for diffusionType to set.
       * @return This builder for chaining.
       */
      public Builder setDiffusionTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        diffusionType_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.util.List atom_ =
        java.util.Collections.emptyList();
      private void ensureAtomIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          atom_ = new java.util.ArrayList(atom_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom.Builder, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.AtomOrBuilder> atomBuilder_;

      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
       */
      public java.util.List getAtomList() {
        if (atomBuilder_ == null) {
          return java.util.Collections.unmodifiableList(atom_);
        } else {
          return atomBuilder_.getMessageList();
        }
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
       */
      public int getAtomCount() {
        if (atomBuilder_ == null) {
          return atom_.size();
        } else {
          return atomBuilder_.getCount();
        }
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
       */
      public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom getAtom(int index) {
        if (atomBuilder_ == null) {
          return atom_.get(index);
        } else {
          return atomBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
       */
      public Builder setAtom(
          int index, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom value) {
        if (atomBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAtomIsMutable();
          atom_.set(index, value);
          onChanged();
        } else {
          atomBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
       */
      public Builder setAtom(
          int index, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom.Builder builderForValue) {
        if (atomBuilder_ == null) {
          ensureAtomIsMutable();
          atom_.set(index, builderForValue.build());
          onChanged();
        } else {
          atomBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
       */
      public Builder addAtom(uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom value) {
        if (atomBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAtomIsMutable();
          atom_.add(value);
          onChanged();
        } else {
          atomBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
       */
      public Builder addAtom(
          int index, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom value) {
        if (atomBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAtomIsMutable();
          atom_.add(index, value);
          onChanged();
        } else {
          atomBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
       */
      public Builder addAtom(
          uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom.Builder builderForValue) {
        if (atomBuilder_ == null) {
          ensureAtomIsMutable();
          atom_.add(builderForValue.build());
          onChanged();
        } else {
          atomBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
       */
      public Builder addAtom(
          int index, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom.Builder builderForValue) {
        if (atomBuilder_ == null) {
          ensureAtomIsMutable();
          atom_.add(index, builderForValue.build());
          onChanged();
        } else {
          atomBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
       */
      public Builder addAllAtom(
          java.lang.Iterable values) {
        if (atomBuilder_ == null) {
          ensureAtomIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, atom_);
          onChanged();
        } else {
          atomBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
       */
      public Builder clearAtom() {
        if (atomBuilder_ == null) {
          atom_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          atomBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
       */
      public Builder removeAtom(int index) {
        if (atomBuilder_ == null) {
          ensureAtomIsMutable();
          atom_.remove(index);
          onChanged();
        } else {
          atomBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
       */
      public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom.Builder getAtomBuilder(
          int index) {
        return getAtomFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
       */
      public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.AtomOrBuilder getAtomOrBuilder(
          int index) {
        if (atomBuilder_ == null) {
          return atom_.get(index);  } else {
          return atomBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
       */
      public java.util.List 
           getAtomOrBuilderList() {
        if (atomBuilder_ != null) {
          return atomBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(atom_);
        }
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
       */
      public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom.Builder addAtomBuilder() {
        return getAtomFieldBuilder().addBuilder(
            uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom.getDefaultInstance());
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
       */
      public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom.Builder addAtomBuilder(
          int index) {
        return getAtomFieldBuilder().addBuilder(
            index, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom.getDefaultInstance());
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Atom atom = 4;
       */
      public java.util.List 
           getAtomBuilderList() {
        return getAtomFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom.Builder, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.AtomOrBuilder> 
          getAtomFieldBuilder() {
        if (atomBuilder_ == null) {
          atomBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Atom.Builder, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.AtomOrBuilder>(
                  atom_,
                  ((bitField0_ & 0x00000008) != 0),
                  getParentForChildren(),
                  isClean());
          atom_ = null;
        }
        return atomBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:uk.ac.sussex.gdsc.smlm.data.config.Molecule)
    }

    // @@protoc_insertion_point(class_scope:uk.ac.sussex.gdsc.smlm.data.config.Molecule)
    private static final uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule();
    }

    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public Molecule parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MixtureOrBuilder extends
      // @@protoc_insertion_point(interface_extends:uk.ac.sussex.gdsc.smlm.data.config.Mixture)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
     */
    java.util.List 
        getMoleculeList();
    /**
     * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
     */
    uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule getMolecule(int index);
    /**
     * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
     */
    int getMoleculeCount();
    /**
     * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
     */
    java.util.List 
        getMoleculeOrBuilderList();
    /**
     * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
     */
    uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.MoleculeOrBuilder getMoleculeOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code uk.ac.sussex.gdsc.smlm.data.config.Mixture}
   */
  public static final class Mixture extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:uk.ac.sussex.gdsc.smlm.data.config.Mixture)
      MixtureOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Mixture.newBuilder() to construct.
    private Mixture(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private Mixture() {
      molecule_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Mixture();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.internal_static_uk_ac_sussex_gdsc_smlm_data_config_Mixture_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.internal_static_uk_ac_sussex_gdsc_smlm_data_config_Mixture_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture.class, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture.Builder.class);
    }

    public static final int MOLECULE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List molecule_;
    /**
     * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
     */
    @java.lang.Override
    public java.util.List getMoleculeList() {
      return molecule_;
    }
    /**
     * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
     */
    @java.lang.Override
    public java.util.List 
        getMoleculeOrBuilderList() {
      return molecule_;
    }
    /**
     * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
     */
    @java.lang.Override
    public int getMoleculeCount() {
      return molecule_.size();
    }
    /**
     * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
     */
    @java.lang.Override
    public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule getMolecule(int index) {
      return molecule_.get(index);
    }
    /**
     * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
     */
    @java.lang.Override
    public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.MoleculeOrBuilder getMoleculeOrBuilder(
        int index) {
      return molecule_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

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

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < molecule_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, molecule_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture)) {
        return super.equals(obj);
      }
      uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture other = (uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture) obj;

      if (!getMoleculeList()
          .equals(other.getMoleculeList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getMoleculeCount() > 0) {
        hash = (37 * hash) + MOLECULE_FIELD_NUMBER;
        hash = (53 * hash) + getMoleculeList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code uk.ac.sussex.gdsc.smlm.data.config.Mixture}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:uk.ac.sussex.gdsc.smlm.data.config.Mixture)
        uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.MixtureOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.internal_static_uk_ac_sussex_gdsc_smlm_data_config_Mixture_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.internal_static_uk_ac_sussex_gdsc_smlm_data_config_Mixture_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture.class, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture.Builder.class);
      }

      // Construct using uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (moleculeBuilder_ == null) {
          molecule_ = java.util.Collections.emptyList();
        } else {
          molecule_ = null;
          moleculeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.internal_static_uk_ac_sussex_gdsc_smlm_data_config_Mixture_descriptor;
      }

      @java.lang.Override
      public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture getDefaultInstanceForType() {
        return uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture.getDefaultInstance();
      }

      @java.lang.Override
      public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture build() {
        uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture buildPartial() {
        uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture result = new uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture result) {
        if (moleculeBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            molecule_ = java.util.Collections.unmodifiableList(molecule_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.molecule_ = molecule_;
        } else {
          result.molecule_ = moleculeBuilder_.build();
        }
      }

      private void buildPartial0(uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture result) {
        int from_bitField0_ = bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture) {
          return mergeFrom((uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture other) {
        if (other == uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture.getDefaultInstance()) return this;
        if (moleculeBuilder_ == null) {
          if (!other.molecule_.isEmpty()) {
            if (molecule_.isEmpty()) {
              molecule_ = other.molecule_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureMoleculeIsMutable();
              molecule_.addAll(other.molecule_);
            }
            onChanged();
          }
        } else {
          if (!other.molecule_.isEmpty()) {
            if (moleculeBuilder_.isEmpty()) {
              moleculeBuilder_.dispose();
              moleculeBuilder_ = null;
              molecule_ = other.molecule_;
              bitField0_ = (bitField0_ & ~0x00000001);
              moleculeBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getMoleculeFieldBuilder() : null;
            } else {
              moleculeBuilder_.addAllMessages(other.molecule_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule m =
                    input.readMessage(
                        uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule.parser(),
                        extensionRegistry);
                if (moleculeBuilder_ == null) {
                  ensureMoleculeIsMutable();
                  molecule_.add(m);
                } else {
                  moleculeBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List molecule_ =
        java.util.Collections.emptyList();
      private void ensureMoleculeIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          molecule_ = new java.util.ArrayList(molecule_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule.Builder, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.MoleculeOrBuilder> moleculeBuilder_;

      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
       */
      public java.util.List getMoleculeList() {
        if (moleculeBuilder_ == null) {
          return java.util.Collections.unmodifiableList(molecule_);
        } else {
          return moleculeBuilder_.getMessageList();
        }
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
       */
      public int getMoleculeCount() {
        if (moleculeBuilder_ == null) {
          return molecule_.size();
        } else {
          return moleculeBuilder_.getCount();
        }
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
       */
      public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule getMolecule(int index) {
        if (moleculeBuilder_ == null) {
          return molecule_.get(index);
        } else {
          return moleculeBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
       */
      public Builder setMolecule(
          int index, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule value) {
        if (moleculeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMoleculeIsMutable();
          molecule_.set(index, value);
          onChanged();
        } else {
          moleculeBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
       */
      public Builder setMolecule(
          int index, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule.Builder builderForValue) {
        if (moleculeBuilder_ == null) {
          ensureMoleculeIsMutable();
          molecule_.set(index, builderForValue.build());
          onChanged();
        } else {
          moleculeBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
       */
      public Builder addMolecule(uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule value) {
        if (moleculeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMoleculeIsMutable();
          molecule_.add(value);
          onChanged();
        } else {
          moleculeBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
       */
      public Builder addMolecule(
          int index, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule value) {
        if (moleculeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMoleculeIsMutable();
          molecule_.add(index, value);
          onChanged();
        } else {
          moleculeBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
       */
      public Builder addMolecule(
          uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule.Builder builderForValue) {
        if (moleculeBuilder_ == null) {
          ensureMoleculeIsMutable();
          molecule_.add(builderForValue.build());
          onChanged();
        } else {
          moleculeBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
       */
      public Builder addMolecule(
          int index, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule.Builder builderForValue) {
        if (moleculeBuilder_ == null) {
          ensureMoleculeIsMutable();
          molecule_.add(index, builderForValue.build());
          onChanged();
        } else {
          moleculeBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
       */
      public Builder addAllMolecule(
          java.lang.Iterable values) {
        if (moleculeBuilder_ == null) {
          ensureMoleculeIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, molecule_);
          onChanged();
        } else {
          moleculeBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
       */
      public Builder clearMolecule() {
        if (moleculeBuilder_ == null) {
          molecule_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          moleculeBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
       */
      public Builder removeMolecule(int index) {
        if (moleculeBuilder_ == null) {
          ensureMoleculeIsMutable();
          molecule_.remove(index);
          onChanged();
        } else {
          moleculeBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
       */
      public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule.Builder getMoleculeBuilder(
          int index) {
        return getMoleculeFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
       */
      public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.MoleculeOrBuilder getMoleculeOrBuilder(
          int index) {
        if (moleculeBuilder_ == null) {
          return molecule_.get(index);  } else {
          return moleculeBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
       */
      public java.util.List 
           getMoleculeOrBuilderList() {
        if (moleculeBuilder_ != null) {
          return moleculeBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(molecule_);
        }
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
       */
      public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule.Builder addMoleculeBuilder() {
        return getMoleculeFieldBuilder().addBuilder(
            uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule.getDefaultInstance());
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
       */
      public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule.Builder addMoleculeBuilder(
          int index) {
        return getMoleculeFieldBuilder().addBuilder(
            index, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule.getDefaultInstance());
      }
      /**
       * repeated .uk.ac.sussex.gdsc.smlm.data.config.Molecule molecule = 1;
       */
      public java.util.List 
           getMoleculeBuilderList() {
        return getMoleculeFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule.Builder, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.MoleculeOrBuilder> 
          getMoleculeFieldBuilder() {
        if (moleculeBuilder_ == null) {
          moleculeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Molecule.Builder, uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.MoleculeOrBuilder>(
                  molecule_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          molecule_ = null;
        }
        return moleculeBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:uk.ac.sussex.gdsc.smlm.data.config.Mixture)
    }

    // @@protoc_insertion_point(class_scope:uk.ac.sussex.gdsc.smlm.data.config.Mixture)
    private static final uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture();
    }

    public static uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public Mixture parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public uk.ac.sussex.gdsc.smlm.data.config.MoleculeProtos.Mixture getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_uk_ac_sussex_gdsc_smlm_data_config_Atom_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_uk_ac_sussex_gdsc_smlm_data_config_Atom_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_uk_ac_sussex_gdsc_smlm_data_config_Molecule_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_uk_ac_sussex_gdsc_smlm_data_config_Molecule_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_uk_ac_sussex_gdsc_smlm_data_config_Mixture_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_uk_ac_sussex_gdsc_smlm_data_config_Mixture_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n1uk/ac/sussex/gdsc/smlm/data/config/mol" +
      "ecule.proto\022\"uk.ac.sussex.gdsc.smlm.data" +
      ".config\"5\n\004Atom\022\014\n\004mass\030\001 \001(\001\022\t\n\001x\030\002 \001(\001" +
      "\022\t\n\001y\030\003 \001(\001\022\t\n\001z\030\004 \001(\001\"\204\001\n\010Molecule\022\020\n\010f" +
      "raction\030\001 \001(\001\022\026\n\016diffusion_rate\030\002 \001(\001\022\026\n" +
      "\016diffusion_type\030\003 \001(\t\0226\n\004atom\030\004 \003(\0132(.uk" +
      ".ac.sussex.gdsc.smlm.data.config.Atom\"I\n" +
      "\007Mixture\022>\n\010molecule\030\001 \003(\0132,.uk.ac.susse" +
      "x.gdsc.smlm.data.config.MoleculeB\020B\016Mole" +
      "culeProtosb\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_uk_ac_sussex_gdsc_smlm_data_config_Atom_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_uk_ac_sussex_gdsc_smlm_data_config_Atom_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_uk_ac_sussex_gdsc_smlm_data_config_Atom_descriptor,
        new java.lang.String[] { "Mass", "X", "Y", "Z", });
    internal_static_uk_ac_sussex_gdsc_smlm_data_config_Molecule_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_uk_ac_sussex_gdsc_smlm_data_config_Molecule_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_uk_ac_sussex_gdsc_smlm_data_config_Molecule_descriptor,
        new java.lang.String[] { "Fraction", "DiffusionRate", "DiffusionType", "Atom", });
    internal_static_uk_ac_sussex_gdsc_smlm_data_config_Mixture_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_uk_ac_sussex_gdsc_smlm_data_config_Mixture_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_uk_ac_sussex_gdsc_smlm_data_config_Mixture_descriptor,
        new java.lang.String[] { "Molecule", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy