text:
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: main/protobuf/payments.proto

package org.multibit.hd.core.protobuf;

import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;

// This class is auto-generated so is exempt from warnings and Findbugs
@SuppressWarnings(value="")
@SuppressFBWarnings
public final class MBHDPaymentsProtos {
  private MBHDPaymentsProtos() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  public interface FiatPaymentOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string amount = 1;
    /**
     * required string amount = 1;
     *
     *

     * The fiat amount of the transaction or request.
     *

     */
    boolean hasAmount();
    /**
     * required string amount = 1;
     *
     *

     * The fiat amount of the transaction or request.
     *

     */
    java.lang.String getAmount();
    /**
     * required string amount = 1;
     *
     *

     * The fiat amount of the transaction or request.
     *

     */
    com.google.protobuf.ByteString
        getAmountBytes();

    // required string currency = 2;
    /**
     * required string currency = 2;
     *
     *

     * Stored as a non localised string e.g. 1234.56
     *

     */
    boolean hasCurrency();
    /**
     * required string currency = 2;
     *
     *

     * Stored as a non localised string e.g. 1234.56
     *

     */
    java.lang.String getCurrency();
    /**
     * required string currency = 2;
     *
     *

     * Stored as a non localised string e.g. 1234.56
     *

     */
    com.google.protobuf.ByteString
        getCurrencyBytes();

    // optional string exchange = 3;
    /**
     * optional string exchange = 3;
     *
     *

     * The exchange name used in the definition of the fiat amount e.g. "Bitstamp";
     *

     */
    boolean hasExchange();
    /**
     * optional string exchange = 3;
     *
     *

     * The exchange name used in the definition of the fiat amount e.g. "Bitstamp";
     *

     */
    java.lang.String getExchange();
    /**
     * optional string exchange = 3;
     *
     *

     * The exchange name used in the definition of the fiat amount e.g. "Bitstamp";
     *

     */
    com.google.protobuf.ByteString
        getExchangeBytes();

    // optional string rate = 4;
    /**
     * optional string rate = 4;
     *
     *

     * The exchange rate used in the definition of the fiat amount (this is the price of 1 BTC in the fiat currency)
     *

     */
    boolean hasRate();
    /**
     * optional string rate = 4;
     *
     *

     * The exchange rate used in the definition of the fiat amount (this is the price of 1 BTC in the fiat currency)
     *

     */
    java.lang.String getRate();
    /**
     * optional string rate = 4;
     *
     *

     * The exchange rate used in the definition of the fiat amount (this is the price of 1 BTC in the fiat currency)
     *

     */
    com.google.protobuf.ByteString
        getRateBytes();
  }
  /**
   * Protobuf type {@code FiatPayment}
   *
   *

   **
   * A fiat amount, together with exchange details of how it was generated
   *

   */
  public static final class FiatPayment extends
      com.google.protobuf.GeneratedMessage
      implements FiatPaymentOrBuilder {
    // Use FiatPayment.newBuilder() to construct.
    private FiatPayment(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private FiatPayment(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final FiatPayment defaultInstance;
    public static FiatPayment getDefaultInstance() {
      return defaultInstance;
    }

    public FiatPayment getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private FiatPayment(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              amount_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              currency_ = input.readBytes();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              exchange_ = input.readBytes();
              break;
            }
            case 34: {
              bitField0_ |= 0x00000008;
              rate_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_FiatPayment_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_FiatPayment_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.class, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.Builder.class);
    }

    public static com.google.protobuf.Parser<FiatPayment> PARSER =
        new com.google.protobuf.AbstractParser<FiatPayment>() {
      public FiatPayment parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new FiatPayment(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string amount = 1;
    public static final int AMOUNT_FIELD_NUMBER = 1;
    private java.lang.Object amount_;
    /**
     * required string amount = 1;
     *
     *

     * The fiat amount of the transaction or request.
     *

     */
    public boolean hasAmount() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string amount = 1;
     *
     *

     * The fiat amount of the transaction or request.
     *

     */
    public java.lang.String getAmount() {
      java.lang.Object ref = amount_;
      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();
        if (bs.isValidUtf8()) {
          amount_ = s;
        }
        return s;
      }
    }
    /**
     * required string amount = 1;
     *
     *

     * The fiat amount of the transaction or request.
     *

     */
    public com.google.protobuf.ByteString
        getAmountBytes() {
      java.lang.Object ref = amount_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        amount_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required string currency = 2;
    public static final int CURRENCY_FIELD_NUMBER = 2;
    private java.lang.Object currency_;
    /**
     * required string currency = 2;
     *
     *

     * Stored as a non localised string e.g. 1234.56
     *

     */
    public boolean hasCurrency() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required string currency = 2;
     *
     *

     * Stored as a non localised string e.g. 1234.56
     *

     */
    public java.lang.String getCurrency() {
      java.lang.Object ref = currency_;
      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();
        if (bs.isValidUtf8()) {
          currency_ = s;
        }
        return s;
      }
    }
    /**
     * required string currency = 2;
     *
     *

     * Stored as a non localised string e.g. 1234.56
     *

     */
    public com.google.protobuf.ByteString
        getCurrencyBytes() {
      java.lang.Object ref = currency_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        currency_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string exchange = 3;
    public static final int EXCHANGE_FIELD_NUMBER = 3;
    private java.lang.Object exchange_;
    /**
     * optional string exchange = 3;
     *
     *

     * The exchange name used in the definition of the fiat amount e.g. "Bitstamp";
     *

     */
    public boolean hasExchange() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional string exchange = 3;
     *
     *

     * The exchange name used in the definition of the fiat amount e.g. "Bitstamp";
     *

     */
    public java.lang.String getExchange() {
      java.lang.Object ref = exchange_;
      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();
        if (bs.isValidUtf8()) {
          exchange_ = s;
        }
        return s;
      }
    }
    /**
     * optional string exchange = 3;
     *
     *

     * The exchange name used in the definition of the fiat amount e.g. "Bitstamp";
     *

     */
    public com.google.protobuf.ByteString
        getExchangeBytes() {
      java.lang.Object ref = exchange_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        exchange_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string rate = 4;
    public static final int RATE_FIELD_NUMBER = 4;
    private java.lang.Object rate_;
    /**
     * optional string rate = 4;
     *
     *

     * The exchange rate used in the definition of the fiat amount (this is the price of 1 BTC in the fiat currency)
     *

     */
    public boolean hasRate() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional string rate = 4;
     *
     *

     * The exchange rate used in the definition of the fiat amount (this is the price of 1 BTC in the fiat currency)
     *

     */
    public java.lang.String getRate() {
      java.lang.Object ref = rate_;
      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();
        if (bs.isValidUtf8()) {
          rate_ = s;
        }
        return s;
      }
    }
    /**
     * optional string rate = 4;
     *
     *

     * The exchange rate used in the definition of the fiat amount (this is the price of 1 BTC in the fiat currency)
     *

     */
    public com.google.protobuf.ByteString
        getRateBytes() {
      java.lang.Object ref = rate_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        rate_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      amount_ = "";
      currency_ = "";
      exchange_ = "";
      rate_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasAmount()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasCurrency()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getAmountBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getCurrencyBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getExchangeBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(4, getRateBytes());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getAmountBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getCurrencyBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getExchangeBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, getRateBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code FiatPayment}
     *
     *

     **
     * A fiat amount, together with exchange details of how it was generated
     *

     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPaymentOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_FiatPayment_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_FiatPayment_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.class, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.Builder.class);
      }

      // Construct using org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        amount_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        currency_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        exchange_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        rate_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_FiatPayment_descriptor;
      }

      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment getDefaultInstanceForType() {
        return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.getDefaultInstance();
      }

      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment build() {
        org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment buildPartial() {
        org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment result = new org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.amount_ = amount_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.currency_ = currency_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.exchange_ = exchange_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.rate_ = rate_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment) {
          return mergeFrom((org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment other) {
        if (other == org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.getDefaultInstance()) return this;
        if (other.hasAmount()) {
          bitField0_ |= 0x00000001;
          amount_ = other.amount_;
          onChanged();
        }
        if (other.hasCurrency()) {
          bitField0_ |= 0x00000002;
          currency_ = other.currency_;
          onChanged();
        }
        if (other.hasExchange()) {
          bitField0_ |= 0x00000004;
          exchange_ = other.exchange_;
          onChanged();
        }
        if (other.hasRate()) {
          bitField0_ |= 0x00000008;
          rate_ = other.rate_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasAmount()) {

          return false;
        }
        if (!hasCurrency()) {

          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string amount = 1;
      private java.lang.Object amount_ = "";
      /**
       * required string amount = 1;
       *
       *

       * The fiat amount of the transaction or request.
       *

       */
      public boolean hasAmount() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string amount = 1;
       *
       *

       * The fiat amount of the transaction or request.
       *

       */
      public java.lang.String getAmount() {
        java.lang.Object ref = amount_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          amount_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string amount = 1;
       *
       *

       * The fiat amount of the transaction or request.
       *

       */
      public com.google.protobuf.ByteString
          getAmountBytes() {
        java.lang.Object ref = amount_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          amount_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string amount = 1;
       *
       *

       * The fiat amount of the transaction or request.
       *

       */
      public Builder setAmount(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        amount_ = value;
        onChanged();
        return this;
      }
      /**
       * required string amount = 1;
       *
       *

       * The fiat amount of the transaction or request.
       *

       */
      public Builder clearAmount() {
        bitField0_ = (bitField0_ & ~0x00000001);
        amount_ = getDefaultInstance().getAmount();
        onChanged();
        return this;
      }
      /**
       * required string amount = 1;
       *
       *

       * The fiat amount of the transaction or request.
       *

       */
      public Builder setAmountBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        amount_ = value;
        onChanged();
        return this;
      }

      // required string currency = 2;
      private java.lang.Object currency_ = "";
      /**
       * required string currency = 2;
       *
       *

       * Stored as a non localised string e.g. 1234.56
       *

       */
      public boolean hasCurrency() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * required string currency = 2;
       *
       *

       * Stored as a non localised string e.g. 1234.56
       *

       */
      public java.lang.String getCurrency() {
        java.lang.Object ref = currency_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          currency_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string currency = 2;
       *
       *

       * Stored as a non localised string e.g. 1234.56
       *

       */
      public com.google.protobuf.ByteString
          getCurrencyBytes() {
        java.lang.Object ref = currency_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          currency_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string currency = 2;
       *
       *

       * Stored as a non localised string e.g. 1234.56
       *

       */
      public Builder setCurrency(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        currency_ = value;
        onChanged();
        return this;
      }
      /**
       * required string currency = 2;
       *
       *

       * Stored as a non localised string e.g. 1234.56
       *

       */
      public Builder clearCurrency() {
        bitField0_ = (bitField0_ & ~0x00000002);
        currency_ = getDefaultInstance().getCurrency();
        onChanged();
        return this;
      }
      /**
       * required string currency = 2;
       *
       *

       * Stored as a non localised string e.g. 1234.56
       *

       */
      public Builder setCurrencyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        currency_ = value;
        onChanged();
        return this;
      }

      // optional string exchange = 3;
      private java.lang.Object exchange_ = "";
      /**
       * optional string exchange = 3;
       *
       *

       * The exchange name used in the definition of the fiat amount e.g. "Bitstamp";
       *

       */
      public boolean hasExchange() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional string exchange = 3;
       *
       *

       * The exchange name used in the definition of the fiat amount e.g. "Bitstamp";
       *

       */
      public java.lang.String getExchange() {
        java.lang.Object ref = exchange_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          exchange_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string exchange = 3;
       *
       *

       * The exchange name used in the definition of the fiat amount e.g. "Bitstamp";
       *

       */
      public com.google.protobuf.ByteString
          getExchangeBytes() {
        java.lang.Object ref = exchange_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          exchange_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string exchange = 3;
       *
       *

       * The exchange name used in the definition of the fiat amount e.g. "Bitstamp";
       *

       */
      public Builder setExchange(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        exchange_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string exchange = 3;
       *
       *

       * The exchange name used in the definition of the fiat amount e.g. "Bitstamp";
       *

       */
      public Builder clearExchange() {
        bitField0_ = (bitField0_ & ~0x00000004);
        exchange_ = getDefaultInstance().getExchange();
        onChanged();
        return this;
      }
      /**
       * optional string exchange = 3;
       *
       *

       * The exchange name used in the definition of the fiat amount e.g. "Bitstamp";
       *

       */
      public Builder setExchangeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        exchange_ = value;
        onChanged();
        return this;
      }

      // optional string rate = 4;
      private java.lang.Object rate_ = "";
      /**
       * optional string rate = 4;
       *
       *

       * The exchange rate used in the definition of the fiat amount (this is the price of 1 BTC in the fiat currency)
       *

       */
      public boolean hasRate() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional string rate = 4;
       *
       *

       * The exchange rate used in the definition of the fiat amount (this is the price of 1 BTC in the fiat currency)
       *

       */
      public java.lang.String getRate() {
        java.lang.Object ref = rate_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          rate_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string rate = 4;
       *
       *

       * The exchange rate used in the definition of the fiat amount (this is the price of 1 BTC in the fiat currency)
       *

       */
      public com.google.protobuf.ByteString
          getRateBytes() {
        java.lang.Object ref = rate_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          rate_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string rate = 4;
       *
       *

       * The exchange rate used in the definition of the fiat amount (this is the price of 1 BTC in the fiat currency)
       *

       */
      public Builder setRate(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        rate_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string rate = 4;
       *
       *

       * The exchange rate used in the definition of the fiat amount (this is the price of 1 BTC in the fiat currency)
       *

       */
      public Builder clearRate() {
        bitField0_ = (bitField0_ & ~0x00000008);
        rate_ = getDefaultInstance().getRate();
        onChanged();
        return this;
      }
      /**
       * optional string rate = 4;
       *
       *

       * The exchange rate used in the definition of the fiat amount (this is the price of 1 BTC in the fiat currency)
       *

       */
      public Builder setRateBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        rate_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:FiatPayment)
    }

    static {
      defaultInstance = new FiatPayment(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:FiatPayment)
  }

  public interface MBHDPaymentRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string address = 1;
    /**
     * required string address = 1;
     *
     *

     * The payment request bitcoin address (as per the bitcoin URI spec)
     *

     */
    boolean hasAddress();
    /**
     * required string address = 1;
     *
     *

     * The payment request bitcoin address (as per the bitcoin URI spec)
     *

     */
    java.lang.String getAddress();
    /**
     * required string address = 1;
     *
     *

     * The payment request bitcoin address (as per the bitcoin URI spec)
     *

     */
    com.google.protobuf.ByteString
        getAddressBytes();

    // optional string label = 2;
    /**
     * optional string label = 2;
     *
     *

     * The label (as per the bitcoin URI spec)
     *

     */
    boolean hasLabel();
    /**
     * optional string label = 2;
     *
     *

     * The label (as per the bitcoin URI spec)
     *

     */
    java.lang.String getLabel();
    /**
     * optional string label = 2;
     *
     *

     * The label (as per the bitcoin URI spec)
     *

     */
    com.google.protobuf.ByteString
        getLabelBytes();

    // optional int64 amountBTC = 3;
    /**
     * optional int64 amountBTC = 3;
     *
     *

     * The bitcoin amount, in satoshi (as per the bitcoin URI spec)
     *

     */
    boolean hasAmountBTC();
    /**
     * optional int64 amountBTC = 3;
     *
     *

     * The bitcoin amount, in satoshi (as per the bitcoin URI spec)
     *

     */
    long getAmountBTC();

    // optional .FiatPayment amount_fiat = 4;
    /**
     * optional .FiatPayment amount_fiat = 4;
     *
     *

     * The fiat equivalent of the bitcoin amount
     *

     */
    boolean hasAmountFiat();
    /**
     * optional .FiatPayment amount_fiat = 4;
     *
     *

     * The fiat equivalent of the bitcoin amount
     *

     */
    org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment getAmountFiat();
    /**
     * optional .FiatPayment amount_fiat = 4;
     *
     *

     * The fiat equivalent of the bitcoin amount
     *

     */
    org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPaymentOrBuilder getAmountFiatOrBuilder();

    // optional string note = 5;
    /**
     * optional string note = 5;
     *
     *

     * The private note (this is not included on any QRcode)
     *

     */
    boolean hasNote();
    /**
     * optional string note = 5;
     *
     *

     * The private note (this is not included on any QRcode)
     *

     */
    java.lang.String getNote();
    /**
     * optional string note = 5;
     *
     *

     * The private note (this is not included on any QRcode)
     *

     */
    com.google.protobuf.ByteString
        getNoteBytes();

    // optional int64 date = 6;
    /**
     * optional int64 date = 6;
     *
     *

     * The creation datetime (millis since epoch)
     *

     */
    boolean hasDate();
    /**
     * optional int64 date = 6;
     *
     *

     * The creation datetime (millis since epoch)
     *

     */
    long getDate();

    // optional bool isGlidera = 7;
    /**
     * optional bool isGlidera = 7;
     *
     *

     * If true then this payment request is intended for use by Glidera, false otherwise
     *

     */
    boolean hasIsGlidera();
    /**
     * optional bool isGlidera = 7;
     *
     *

     * If true then this payment request is intended for use by Glidera, false otherwise
     *

     */
    boolean getIsGlidera();
  }
  /**
   * Protobuf type {@code MBHDPaymentRequest}
   *
   *

   **
   * A single payment request (as created on the Request bitcoin screen)
   *

   */
  public static final class MBHDPaymentRequest extends
      com.google.protobuf.GeneratedMessage
      implements MBHDPaymentRequestOrBuilder {
    // Use MBHDPaymentRequest.newBuilder() to construct.
    private MBHDPaymentRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private MBHDPaymentRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final MBHDPaymentRequest defaultInstance;
    public static MBHDPaymentRequest getDefaultInstance() {
      return defaultInstance;
    }

    public MBHDPaymentRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private MBHDPaymentRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              address_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              label_ = input.readBytes();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              amountBTC_ = input.readInt64();
              break;
            }
            case 34: {
              org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = amountFiat_.toBuilder();
              }
              amountFiat_ = input.readMessage(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(amountFiat_);
                amountFiat_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 42: {
              bitField0_ |= 0x00000010;
              note_ = input.readBytes();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              date_ = input.readInt64();
              break;
            }
            case 56: {
              bitField0_ |= 0x00000040;
              isGlidera_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_MBHDPaymentRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_MBHDPaymentRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest.class, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<MBHDPaymentRequest> PARSER =
        new com.google.protobuf.AbstractParser<MBHDPaymentRequest>() {
      public MBHDPaymentRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new MBHDPaymentRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string address = 1;
    public static final int ADDRESS_FIELD_NUMBER = 1;
    private java.lang.Object address_;
    /**
     * required string address = 1;
     *
     *

     * The payment request bitcoin address (as per the bitcoin URI spec)
     *

     */
    public boolean hasAddress() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string address = 1;
     *
     *

     * The payment request bitcoin address (as per the bitcoin URI spec)
     *

     */
    public java.lang.String getAddress() {
      java.lang.Object ref = address_;
      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();
        if (bs.isValidUtf8()) {
          address_ = s;
        }
        return s;
      }
    }
    /**
     * required string address = 1;
     *
     *

     * The payment request bitcoin address (as per the bitcoin URI spec)
     *

     */
    public com.google.protobuf.ByteString
        getAddressBytes() {
      java.lang.Object ref = address_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        address_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string label = 2;
    public static final int LABEL_FIELD_NUMBER = 2;
    private java.lang.Object label_;
    /**
     * optional string label = 2;
     *
     *

     * The label (as per the bitcoin URI spec)
     *

     */
    public boolean hasLabel() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional string label = 2;
     *
     *

     * The label (as per the bitcoin URI spec)
     *

     */
    public java.lang.String getLabel() {
      java.lang.Object ref = label_;
      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();
        if (bs.isValidUtf8()) {
          label_ = s;
        }
        return s;
      }
    }
    /**
     * optional string label = 2;
     *
     *

     * The label (as per the bitcoin URI spec)
     *

     */
    public com.google.protobuf.ByteString
        getLabelBytes() {
      java.lang.Object ref = label_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        label_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int64 amountBTC = 3;
    public static final int AMOUNTBTC_FIELD_NUMBER = 3;
    private long amountBTC_;
    /**
     * optional int64 amountBTC = 3;
     *
     *

     * The bitcoin amount, in satoshi (as per the bitcoin URI spec)
     *

     */
    public boolean hasAmountBTC() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional int64 amountBTC = 3;
     *
     *

     * The bitcoin amount, in satoshi (as per the bitcoin URI spec)
     *

     */
    public long getAmountBTC() {
      return amountBTC_;
    }

    // optional .FiatPayment amount_fiat = 4;
    public static final int AMOUNT_FIAT_FIELD_NUMBER = 4;
    private org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment amountFiat_;
    /**
     * optional .FiatPayment amount_fiat = 4;
     *
     *

     * The fiat equivalent of the bitcoin amount
     *

     */
    public boolean hasAmountFiat() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional .FiatPayment amount_fiat = 4;
     *
     *

     * The fiat equivalent of the bitcoin amount
     *

     */
    public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment getAmountFiat() {
      return amountFiat_;
    }
    /**
     * optional .FiatPayment amount_fiat = 4;
     *
     *

     * The fiat equivalent of the bitcoin amount
     *

     */
    public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPaymentOrBuilder getAmountFiatOrBuilder() {
      return amountFiat_;
    }

    // optional string note = 5;
    public static final int NOTE_FIELD_NUMBER = 5;
    private java.lang.Object note_;
    /**
     * optional string note = 5;
     *
     *

     * The private note (this is not included on any QRcode)
     *

     */
    public boolean hasNote() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * optional string note = 5;
     *
     *

     * The private note (this is not included on any QRcode)
     *

     */
    public java.lang.String getNote() {
      java.lang.Object ref = note_;
      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();
        if (bs.isValidUtf8()) {
          note_ = s;
        }
        return s;
      }
    }
    /**
     * optional string note = 5;
     *
     *

     * The private note (this is not included on any QRcode)
     *

     */
    public com.google.protobuf.ByteString
        getNoteBytes() {
      java.lang.Object ref = note_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        note_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int64 date = 6;
    public static final int DATE_FIELD_NUMBER = 6;
    private long date_;
    /**
     * optional int64 date = 6;
     *
     *

     * The creation datetime (millis since epoch)
     *

     */
    public boolean hasDate() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * optional int64 date = 6;
     *
     *

     * The creation datetime (millis since epoch)
     *

     */
    public long getDate() {
      return date_;
    }

    // optional bool isGlidera = 7;
    public static final int ISGLIDERA_FIELD_NUMBER = 7;
    private boolean isGlidera_;
    /**
     * optional bool isGlidera = 7;
     *
     *

     * If true then this payment request is intended for use by Glidera, false otherwise
     *

     */
    public boolean hasIsGlidera() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * optional bool isGlidera = 7;
     *
     *

     * If true then this payment request is intended for use by Glidera, false otherwise
     *

     */
    public boolean getIsGlidera() {
      return isGlidera_;
    }

    private void initFields() {
      address_ = "";
      label_ = "";
      amountBTC_ = 0L;
      amountFiat_ = org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.getDefaultInstance();
      note_ = "";
      date_ = 0L;
      isGlidera_ = false;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasAddress()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasAmountFiat()) {
        if (!getAmountFiat().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getAddressBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getLabelBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt64(3, amountBTC_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, amountFiat_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBytes(5, getNoteBytes());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeInt64(6, date_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeBool(7, isGlidera_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getAddressBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getLabelBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, amountBTC_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, amountFiat_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, getNoteBytes());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(6, date_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, isGlidera_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code MBHDPaymentRequest}
     *
     *

     **
     * A single payment request (as created on the Request bitcoin screen)
     *

     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_MBHDPaymentRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_MBHDPaymentRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest.class, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest.Builder.class);
      }

      // Construct using org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getAmountFiatFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        address_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        label_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        amountBTC_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000004);
        if (amountFiatBuilder_ == null) {
          amountFiat_ = org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.getDefaultInstance();
        } else {
          amountFiatBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        note_ = "";
        bitField0_ = (bitField0_ & ~0x00000010);
        date_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000020);
        isGlidera_ = false;
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_MBHDPaymentRequest_descriptor;
      }

      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest getDefaultInstanceForType() {
        return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest.getDefaultInstance();
      }

      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest build() {
        org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest buildPartial() {
        org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest result = new org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.address_ = address_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.label_ = label_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.amountBTC_ = amountBTC_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        if (amountFiatBuilder_ == null) {
          result.amountFiat_ = amountFiat_;
        } else {
          result.amountFiat_ = amountFiatBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.note_ = note_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.date_ = date_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.isGlidera_ = isGlidera_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest) {
          return mergeFrom((org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest other) {
        if (other == org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest.getDefaultInstance()) return this;
        if (other.hasAddress()) {
          bitField0_ |= 0x00000001;
          address_ = other.address_;
          onChanged();
        }
        if (other.hasLabel()) {
          bitField0_ |= 0x00000002;
          label_ = other.label_;
          onChanged();
        }
        if (other.hasAmountBTC()) {
          setAmountBTC(other.getAmountBTC());
        }
        if (other.hasAmountFiat()) {
          mergeAmountFiat(other.getAmountFiat());
        }
        if (other.hasNote()) {
          bitField0_ |= 0x00000010;
          note_ = other.note_;
          onChanged();
        }
        if (other.hasDate()) {
          setDate(other.getDate());
        }
        if (other.hasIsGlidera()) {
          setIsGlidera(other.getIsGlidera());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasAddress()) {

          return false;
        }
        if (hasAmountFiat()) {
          if (!getAmountFiat().isInitialized()) {

            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string address = 1;
      private java.lang.Object address_ = "";
      /**
       * required string address = 1;
       *
       *

       * The payment request bitcoin address (as per the bitcoin URI spec)
       *

       */
      public boolean hasAddress() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string address = 1;
       *
       *

       * The payment request bitcoin address (as per the bitcoin URI spec)
       *

       */
      public java.lang.String getAddress() {
        java.lang.Object ref = address_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          address_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string address = 1;
       *
       *

       * The payment request bitcoin address (as per the bitcoin URI spec)
       *

       */
      public com.google.protobuf.ByteString
          getAddressBytes() {
        java.lang.Object ref = address_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          address_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string address = 1;
       *
       *

       * The payment request bitcoin address (as per the bitcoin URI spec)
       *

       */
      public Builder setAddress(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        address_ = value;
        onChanged();
        return this;
      }
      /**
       * required string address = 1;
       *
       *

       * The payment request bitcoin address (as per the bitcoin URI spec)
       *

       */
      public Builder clearAddress() {
        bitField0_ = (bitField0_ & ~0x00000001);
        address_ = getDefaultInstance().getAddress();
        onChanged();
        return this;
      }
      /**
       * required string address = 1;
       *
       *

       * The payment request bitcoin address (as per the bitcoin URI spec)
       *

       */
      public Builder setAddressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        address_ = value;
        onChanged();
        return this;
      }

      // optional string label = 2;
      private java.lang.Object label_ = "";
      /**
       * optional string label = 2;
       *
       *

       * The label (as per the bitcoin URI spec)
       *

       */
      public boolean hasLabel() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional string label = 2;
       *
       *

       * The label (as per the bitcoin URI spec)
       *

       */
      public java.lang.String getLabel() {
        java.lang.Object ref = label_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          label_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string label = 2;
       *
       *

       * The label (as per the bitcoin URI spec)
       *

       */
      public com.google.protobuf.ByteString
          getLabelBytes() {
        java.lang.Object ref = label_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          label_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string label = 2;
       *
       *

       * The label (as per the bitcoin URI spec)
       *

       */
      public Builder setLabel(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        label_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string label = 2;
       *
       *

       * The label (as per the bitcoin URI spec)
       *

       */
      public Builder clearLabel() {
        bitField0_ = (bitField0_ & ~0x00000002);
        label_ = getDefaultInstance().getLabel();
        onChanged();
        return this;
      }
      /**
       * optional string label = 2;
       *
       *

       * The label (as per the bitcoin URI spec)
       *

       */
      public Builder setLabelBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        label_ = value;
        onChanged();
        return this;
      }

      // optional int64 amountBTC = 3;
      private long amountBTC_ ;
      /**
       * optional int64 amountBTC = 3;
       *
       *

       * The bitcoin amount, in satoshi (as per the bitcoin URI spec)
       *

       */
      public boolean hasAmountBTC() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional int64 amountBTC = 3;
       *
       *

       * The bitcoin amount, in satoshi (as per the bitcoin URI spec)
       *

       */
      public long getAmountBTC() {
        return amountBTC_;
      }
      /**
       * optional int64 amountBTC = 3;
       *
       *

       * The bitcoin amount, in satoshi (as per the bitcoin URI spec)
       *

       */
      public Builder setAmountBTC(long value) {
        bitField0_ |= 0x00000004;
        amountBTC_ = value;
        onChanged();
        return this;
      }
      /**
       * optional int64 amountBTC = 3;
       *
       *

       * The bitcoin amount, in satoshi (as per the bitcoin URI spec)
       *

       */
      public Builder clearAmountBTC() {
        bitField0_ = (bitField0_ & ~0x00000004);
        amountBTC_ = 0L;
        onChanged();
        return this;
      }

      // optional .FiatPayment amount_fiat = 4;
      private org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment amountFiat_ = org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.Builder, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPaymentOrBuilder> amountFiatBuilder_;
      /**
       * optional .FiatPayment amount_fiat = 4;
       *
       *

       * The fiat equivalent of the bitcoin amount
       *

       */
      public boolean hasAmountFiat() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional .FiatPayment amount_fiat = 4;
       *
       *

       * The fiat equivalent of the bitcoin amount
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment getAmountFiat() {
        if (amountFiatBuilder_ == null) {
          return amountFiat_;
        } else {
          return amountFiatBuilder_.getMessage();
        }
      }
      /**
       * optional .FiatPayment amount_fiat = 4;
       *
       *

       * The fiat equivalent of the bitcoin amount
       *

       */
      public Builder setAmountFiat(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment value) {
        if (amountFiatBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          amountFiat_ = value;
          onChanged();
        } else {
          amountFiatBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * optional .FiatPayment amount_fiat = 4;
       *
       *

       * The fiat equivalent of the bitcoin amount
       *

       */
      public Builder setAmountFiat(
          org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.Builder builderForValue) {
        if (amountFiatBuilder_ == null) {
          amountFiat_ = builderForValue.build();
          onChanged();
        } else {
          amountFiatBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * optional .FiatPayment amount_fiat = 4;
       *
       *

       * The fiat equivalent of the bitcoin amount
       *

       */
      public Builder mergeAmountFiat(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment value) {
        if (amountFiatBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008) &&
              amountFiat_ != org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.getDefaultInstance()) {
            amountFiat_ =
              org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.newBuilder(amountFiat_).mergeFrom(value).buildPartial();
          } else {
            amountFiat_ = value;
          }
          onChanged();
        } else {
          amountFiatBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * optional .FiatPayment amount_fiat = 4;
       *
       *

       * The fiat equivalent of the bitcoin amount
       *

       */
      public Builder clearAmountFiat() {
        if (amountFiatBuilder_ == null) {
          amountFiat_ = org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.getDefaultInstance();
          onChanged();
        } else {
          amountFiatBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      /**
       * optional .FiatPayment amount_fiat = 4;
       *
       *

       * The fiat equivalent of the bitcoin amount
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.Builder getAmountFiatBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getAmountFiatFieldBuilder().getBuilder();
      }
      /**
       * optional .FiatPayment amount_fiat = 4;
       *
       *

       * The fiat equivalent of the bitcoin amount
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPaymentOrBuilder getAmountFiatOrBuilder() {
        if (amountFiatBuilder_ != null) {
          return amountFiatBuilder_.getMessageOrBuilder();
        } else {
          return amountFiat_;
        }
      }
      /**
       * optional .FiatPayment amount_fiat = 4;
       *
       *

       * The fiat equivalent of the bitcoin amount
       *

       */
      private com.google.protobuf.SingleFieldBuilder<
          org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.Builder, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPaymentOrBuilder>
          getAmountFiatFieldBuilder() {
        if (amountFiatBuilder_ == null) {
          amountFiatBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.Builder, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPaymentOrBuilder>(
                  amountFiat_,
                  getParentForChildren(),
                  isClean());
          amountFiat_ = null;
        }
        return amountFiatBuilder_;
      }

      // optional string note = 5;
      private java.lang.Object note_ = "";
      /**
       * optional string note = 5;
       *
       *

       * The private note (this is not included on any QRcode)
       *

       */
      public boolean hasNote() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional string note = 5;
       *
       *

       * The private note (this is not included on any QRcode)
       *

       */
      public java.lang.String getNote() {
        java.lang.Object ref = note_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          note_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string note = 5;
       *
       *

       * The private note (this is not included on any QRcode)
       *

       */
      public com.google.protobuf.ByteString
          getNoteBytes() {
        java.lang.Object ref = note_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          note_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string note = 5;
       *
       *

       * The private note (this is not included on any QRcode)
       *

       */
      public Builder setNote(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        note_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string note = 5;
       *
       *

       * The private note (this is not included on any QRcode)
       *

       */
      public Builder clearNote() {
        bitField0_ = (bitField0_ & ~0x00000010);
        note_ = getDefaultInstance().getNote();
        onChanged();
        return this;
      }
      /**
       * optional string note = 5;
       *
       *

       * The private note (this is not included on any QRcode)
       *

       */
      public Builder setNoteBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        note_ = value;
        onChanged();
        return this;
      }

      // optional int64 date = 6;
      private long date_ ;
      /**
       * optional int64 date = 6;
       *
       *

       * The creation datetime (millis since epoch)
       *

       */
      public boolean hasDate() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * optional int64 date = 6;
       *
       *

       * The creation datetime (millis since epoch)
       *

       */
      public long getDate() {
        return date_;
      }
      /**
       * optional int64 date = 6;
       *
       *

       * The creation datetime (millis since epoch)
       *

       */
      public Builder setDate(long value) {
        bitField0_ |= 0x00000020;
        date_ = value;
        onChanged();
        return this;
      }
      /**
       * optional int64 date = 6;
       *
       *

       * The creation datetime (millis since epoch)
       *

       */
      public Builder clearDate() {
        bitField0_ = (bitField0_ & ~0x00000020);
        date_ = 0L;
        onChanged();
        return this;
      }

      // optional bool isGlidera = 7;
      private boolean isGlidera_ ;
      /**
       * optional bool isGlidera = 7;
       *
       *

       * If true then this payment request is intended for use by Glidera, false otherwise
       *

       */
      public boolean hasIsGlidera() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * optional bool isGlidera = 7;
       *
       *

       * If true then this payment request is intended for use by Glidera, false otherwise
       *

       */
      public boolean getIsGlidera() {
        return isGlidera_;
      }
      /**
       * optional bool isGlidera = 7;
       *
       *

       * If true then this payment request is intended for use by Glidera, false otherwise
       *

       */
      public Builder setIsGlidera(boolean value) {
        bitField0_ |= 0x00000040;
        isGlidera_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool isGlidera = 7;
       *
       *

       * If true then this payment request is intended for use by Glidera, false otherwise
       *

       */
      public Builder clearIsGlidera() {
        bitField0_ = (bitField0_ & ~0x00000040);
        isGlidera_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:MBHDPaymentRequest)
    }

    static {
      defaultInstance = new MBHDPaymentRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:MBHDPaymentRequest)
  }

  public interface TransactionInfoOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string hash = 1;
    /**
     * required string hash = 1;
     *
     *

     * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
     *

     */
    boolean hasHash();
    /**
     * required string hash = 1;
     *
     *

     * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
     *

     */
    java.lang.String getHash();
    /**
     * required string hash = 1;
     *
     *

     * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
     *

     */
    com.google.protobuf.ByteString
        getHashBytes();

    // optional .FiatPayment amount_fiat = 3;
    /**
     * optional .FiatPayment amount_fiat = 3;
     *
     *

     * id = 2 was used by request_address - removed
     *

     */
    boolean hasAmountFiat();
    /**
     * optional .FiatPayment amount_fiat = 3;
     *
     *

     * id = 2 was used by request_address - removed
     *

     */
    org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment getAmountFiat();
    /**
     * optional .FiatPayment amount_fiat = 3;
     *
     *

     * id = 2 was used by request_address - removed
     *

     */
    org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPaymentOrBuilder getAmountFiatOrBuilder();

    // optional string note = 4;
    /**
     * optional string note = 4;
     *
     *

     * The note added when the transaction is sent
     *

     */
    boolean hasNote();
    /**
     * optional string note = 4;
     *
     *

     * The note added when the transaction is sent
     *

     */
    java.lang.String getNote();
    /**
     * optional string note = 4;
     *
     *

     * The note added when the transaction is sent
     *

     */
    com.google.protobuf.ByteString
        getNoteBytes();

    // optional int64 miner_fee = 5;
    /**
     * optional int64 miner_fee = 5;
     *
     *

     * On a send transaction, the miner fee in satoshi. On any other type of transaction : 0 or missing
     *

     */
    boolean hasMinerFee();
    /**
     * optional int64 miner_fee = 5;
     *
     *

     * On a send transaction, the miner fee in satoshi. On any other type of transaction : 0 or missing
     *

     */
    long getMinerFee();

    // optional int64 client_fee = 6;
    /**
     * optional int64 client_fee = 6;
     *
     *

     * On a send transaction, the MultiBit/ client fee in satoshi. On any other type of transaction : 0 or missing
     *

     */
    boolean hasClientFee();
    /**
     * optional int64 client_fee = 6;
     *
     *

     * On a send transaction, the MultiBit/ client fee in satoshi. On any other type of transaction : 0 or missing
     *

     */
    long getClientFee();

    // optional bool sent_by_self = 7 [default = false];
    /**
     * optional bool sent_by_self = 7 [default = false];
     *
     *

     * Whether the transaction was sent by this wallet (=true) or not
     *

     */
    boolean hasSentBySelf();
    /**
     * optional bool sent_by_self = 7 [default = false];
     *
     *

     * Whether the transaction was sent by this wallet (=true) or not
     *

     */
    boolean getSentBySelf();
  }
  /**
   * Protobuf type {@code TransactionInfo}
   *
   *

   **
   * A single "extra" transaction info (this is data additional to the bitcoinj Transaction)
   *

   */
  public static final class TransactionInfo extends
      com.google.protobuf.GeneratedMessage
      implements TransactionInfoOrBuilder {
    // Use TransactionInfo.newBuilder() to construct.
    private TransactionInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private TransactionInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final TransactionInfo defaultInstance;
    public static TransactionInfo getDefaultInstance() {
      return defaultInstance;
    }

    public TransactionInfo getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private TransactionInfo(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              hash_ = input.readBytes();
              break;
            }
            case 26: {
              org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = amountFiat_.toBuilder();
              }
              amountFiat_ = input.readMessage(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(amountFiat_);
                amountFiat_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 34: {
              bitField0_ |= 0x00000004;
              note_ = input.readBytes();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000008;
              minerFee_ = input.readInt64();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000010;
              clientFee_ = input.readInt64();
              break;
            }
            case 56: {
              bitField0_ |= 0x00000020;
              sentBySelf_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_TransactionInfo_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_TransactionInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo.class, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo.Builder.class);
    }

    public static com.google.protobuf.Parser<TransactionInfo> PARSER =
        new com.google.protobuf.AbstractParser<TransactionInfo>() {
      public TransactionInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new TransactionInfo(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string hash = 1;
    public static final int HASH_FIELD_NUMBER = 1;
    private java.lang.Object hash_;
    /**
     * required string hash = 1;
     *
     *

     * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
     *

     */
    public boolean hasHash() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string hash = 1;
     *
     *

     * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
     *

     */
    public java.lang.String getHash() {
      java.lang.Object ref = hash_;
      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();
        if (bs.isValidUtf8()) {
          hash_ = s;
        }
        return s;
      }
    }
    /**
     * required string hash = 1;
     *
     *

     * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
     *

     */
    public com.google.protobuf.ByteString
        getHashBytes() {
      java.lang.Object ref = hash_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        hash_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional .FiatPayment amount_fiat = 3;
    public static final int AMOUNT_FIAT_FIELD_NUMBER = 3;
    private org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment amountFiat_;
    /**
     * optional .FiatPayment amount_fiat = 3;
     *
     *

     * id = 2 was used by request_address - removed
     *

     */
    public boolean hasAmountFiat() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional .FiatPayment amount_fiat = 3;
     *
     *

     * id = 2 was used by request_address - removed
     *

     */
    public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment getAmountFiat() {
      return amountFiat_;
    }
    /**
     * optional .FiatPayment amount_fiat = 3;
     *
     *

     * id = 2 was used by request_address - removed
     *

     */
    public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPaymentOrBuilder getAmountFiatOrBuilder() {
      return amountFiat_;
    }

    // optional string note = 4;
    public static final int NOTE_FIELD_NUMBER = 4;
    private java.lang.Object note_;
    /**
     * optional string note = 4;
     *
     *

     * The note added when the transaction is sent
     *

     */
    public boolean hasNote() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional string note = 4;
     *
     *

     * The note added when the transaction is sent
     *

     */
    public java.lang.String getNote() {
      java.lang.Object ref = note_;
      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();
        if (bs.isValidUtf8()) {
          note_ = s;
        }
        return s;
      }
    }
    /**
     * optional string note = 4;
     *
     *

     * The note added when the transaction is sent
     *

     */
    public com.google.protobuf.ByteString
        getNoteBytes() {
      java.lang.Object ref = note_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        note_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int64 miner_fee = 5;
    public static final int MINER_FEE_FIELD_NUMBER = 5;
    private long minerFee_;
    /**
     * optional int64 miner_fee = 5;
     *
     *

     * On a send transaction, the miner fee in satoshi. On any other type of transaction : 0 or missing
     *

     */
    public boolean hasMinerFee() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional int64 miner_fee = 5;
     *
     *

     * On a send transaction, the miner fee in satoshi. On any other type of transaction : 0 or missing
     *

     */
    public long getMinerFee() {
      return minerFee_;
    }

    // optional int64 client_fee = 6;
    public static final int CLIENT_FEE_FIELD_NUMBER = 6;
    private long clientFee_;
    /**
     * optional int64 client_fee = 6;
     *
     *

     * On a send transaction, the MultiBit/ client fee in satoshi. On any other type of transaction : 0 or missing
     *

     */
    public boolean hasClientFee() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * optional int64 client_fee = 6;
     *
     *

     * On a send transaction, the MultiBit/ client fee in satoshi. On any other type of transaction : 0 or missing
     *

     */
    public long getClientFee() {
      return clientFee_;
    }

    // optional bool sent_by_self = 7 [default = false];
    public static final int SENT_BY_SELF_FIELD_NUMBER = 7;
    private boolean sentBySelf_;
    /**
     * optional bool sent_by_self = 7 [default = false];
     *
     *

     * Whether the transaction was sent by this wallet (=true) or not
     *

     */
    public boolean hasSentBySelf() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * optional bool sent_by_self = 7 [default = false];
     *
     *

     * Whether the transaction was sent by this wallet (=true) or not
     *

     */
    public boolean getSentBySelf() {
      return sentBySelf_;
    }

    private void initFields() {
      hash_ = "";
      amountFiat_ = org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.getDefaultInstance();
      note_ = "";
      minerFee_ = 0L;
      clientFee_ = 0L;
      sentBySelf_ = false;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasHash()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasAmountFiat()) {
        if (!getAmountFiat().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getHashBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(3, amountFiat_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(4, getNoteBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt64(5, minerFee_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeInt64(6, clientFee_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeBool(7, sentBySelf_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getHashBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, amountFiat_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, getNoteBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, minerFee_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(6, clientFee_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, sentBySelf_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code TransactionInfo}
     *
     *

     **
     * A single "extra" transaction info (this is data additional to the bitcoinj Transaction)
     *

     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_TransactionInfo_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_TransactionInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo.class, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo.Builder.class);
      }

      // Construct using org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getAmountFiatFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        hash_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (amountFiatBuilder_ == null) {
          amountFiat_ = org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.getDefaultInstance();
        } else {
          amountFiatBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        note_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        minerFee_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000008);
        clientFee_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000010);
        sentBySelf_ = false;
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_TransactionInfo_descriptor;
      }

      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo getDefaultInstanceForType() {
        return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo.getDefaultInstance();
      }

      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo build() {
        org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo buildPartial() {
        org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo result = new org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.hash_ = hash_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (amountFiatBuilder_ == null) {
          result.amountFiat_ = amountFiat_;
        } else {
          result.amountFiat_ = amountFiatBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.note_ = note_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.minerFee_ = minerFee_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.clientFee_ = clientFee_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.sentBySelf_ = sentBySelf_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo) {
          return mergeFrom((org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo other) {
        if (other == org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo.getDefaultInstance()) return this;
        if (other.hasHash()) {
          bitField0_ |= 0x00000001;
          hash_ = other.hash_;
          onChanged();
        }
        if (other.hasAmountFiat()) {
          mergeAmountFiat(other.getAmountFiat());
        }
        if (other.hasNote()) {
          bitField0_ |= 0x00000004;
          note_ = other.note_;
          onChanged();
        }
        if (other.hasMinerFee()) {
          setMinerFee(other.getMinerFee());
        }
        if (other.hasClientFee()) {
          setClientFee(other.getClientFee());
        }
        if (other.hasSentBySelf()) {
          setSentBySelf(other.getSentBySelf());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasHash()) {

          return false;
        }
        if (hasAmountFiat()) {
          if (!getAmountFiat().isInitialized()) {

            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string hash = 1;
      private java.lang.Object hash_ = "";
      /**
       * required string hash = 1;
       *
       *

       * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
       *

       */
      public boolean hasHash() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string hash = 1;
       *
       *

       * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
       *

       */
      public java.lang.String getHash() {
        java.lang.Object ref = hash_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          hash_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string hash = 1;
       *
       *

       * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
       *

       */
      public com.google.protobuf.ByteString
          getHashBytes() {
        java.lang.Object ref = hash_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          hash_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string hash = 1;
       *
       *

       * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
       *

       */
      public Builder setHash(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        hash_ = value;
        onChanged();
        return this;
      }
      /**
       * required string hash = 1;
       *
       *

       * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
       *

       */
      public Builder clearHash() {
        bitField0_ = (bitField0_ & ~0x00000001);
        hash_ = getDefaultInstance().getHash();
        onChanged();
        return this;
      }
      /**
       * required string hash = 1;
       *
       *

       * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
       *

       */
      public Builder setHashBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        hash_ = value;
        onChanged();
        return this;
      }

      // optional .FiatPayment amount_fiat = 3;
      private org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment amountFiat_ = org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.Builder, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPaymentOrBuilder> amountFiatBuilder_;
      /**
       * optional .FiatPayment amount_fiat = 3;
       *
       *

       * id = 2 was used by request_address - removed
       *

       */
      public boolean hasAmountFiat() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional .FiatPayment amount_fiat = 3;
       *
       *

       * id = 2 was used by request_address - removed
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment getAmountFiat() {
        if (amountFiatBuilder_ == null) {
          return amountFiat_;
        } else {
          return amountFiatBuilder_.getMessage();
        }
      }
      /**
       * optional .FiatPayment amount_fiat = 3;
       *
       *

       * id = 2 was used by request_address - removed
       *

       */
      public Builder setAmountFiat(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment value) {
        if (amountFiatBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          amountFiat_ = value;
          onChanged();
        } else {
          amountFiatBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * optional .FiatPayment amount_fiat = 3;
       *
       *

       * id = 2 was used by request_address - removed
       *

       */
      public Builder setAmountFiat(
          org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.Builder builderForValue) {
        if (amountFiatBuilder_ == null) {
          amountFiat_ = builderForValue.build();
          onChanged();
        } else {
          amountFiatBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * optional .FiatPayment amount_fiat = 3;
       *
       *

       * id = 2 was used by request_address - removed
       *

       */
      public Builder mergeAmountFiat(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment value) {
        if (amountFiatBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              amountFiat_ != org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.getDefaultInstance()) {
            amountFiat_ =
              org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.newBuilder(amountFiat_).mergeFrom(value).buildPartial();
          } else {
            amountFiat_ = value;
          }
          onChanged();
        } else {
          amountFiatBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * optional .FiatPayment amount_fiat = 3;
       *
       *

       * id = 2 was used by request_address - removed
       *

       */
      public Builder clearAmountFiat() {
        if (amountFiatBuilder_ == null) {
          amountFiat_ = org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.getDefaultInstance();
          onChanged();
        } else {
          amountFiatBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * optional .FiatPayment amount_fiat = 3;
       *
       *

       * id = 2 was used by request_address - removed
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.Builder getAmountFiatBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getAmountFiatFieldBuilder().getBuilder();
      }
      /**
       * optional .FiatPayment amount_fiat = 3;
       *
       *

       * id = 2 was used by request_address - removed
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPaymentOrBuilder getAmountFiatOrBuilder() {
        if (amountFiatBuilder_ != null) {
          return amountFiatBuilder_.getMessageOrBuilder();
        } else {
          return amountFiat_;
        }
      }
      /**
       * optional .FiatPayment amount_fiat = 3;
       *
       *

       * id = 2 was used by request_address - removed
       *

       */
      private com.google.protobuf.SingleFieldBuilder<
          org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.Builder, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPaymentOrBuilder>
          getAmountFiatFieldBuilder() {
        if (amountFiatBuilder_ == null) {
          amountFiatBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.Builder, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPaymentOrBuilder>(
                  amountFiat_,
                  getParentForChildren(),
                  isClean());
          amountFiat_ = null;
        }
        return amountFiatBuilder_;
      }

      // optional string note = 4;
      private java.lang.Object note_ = "";
      /**
       * optional string note = 4;
       *
       *

       * The note added when the transaction is sent
       *

       */
      public boolean hasNote() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional string note = 4;
       *
       *

       * The note added when the transaction is sent
       *

       */
      public java.lang.String getNote() {
        java.lang.Object ref = note_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          note_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string note = 4;
       *
       *

       * The note added when the transaction is sent
       *

       */
      public com.google.protobuf.ByteString
          getNoteBytes() {
        java.lang.Object ref = note_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          note_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string note = 4;
       *
       *

       * The note added when the transaction is sent
       *

       */
      public Builder setNote(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        note_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string note = 4;
       *
       *

       * The note added when the transaction is sent
       *

       */
      public Builder clearNote() {
        bitField0_ = (bitField0_ & ~0x00000004);
        note_ = getDefaultInstance().getNote();
        onChanged();
        return this;
      }
      /**
       * optional string note = 4;
       *
       *

       * The note added when the transaction is sent
       *

       */
      public Builder setNoteBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        note_ = value;
        onChanged();
        return this;
      }

      // optional int64 miner_fee = 5;
      private long minerFee_ ;
      /**
       * optional int64 miner_fee = 5;
       *
       *

       * On a send transaction, the miner fee in satoshi. On any other type of transaction : 0 or missing
       *

       */
      public boolean hasMinerFee() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional int64 miner_fee = 5;
       *
       *

       * On a send transaction, the miner fee in satoshi. On any other type of transaction : 0 or missing
       *

       */
      public long getMinerFee() {
        return minerFee_;
      }
      /**
       * optional int64 miner_fee = 5;
       *
       *

       * On a send transaction, the miner fee in satoshi. On any other type of transaction : 0 or missing
       *

       */
      public Builder setMinerFee(long value) {
        bitField0_ |= 0x00000008;
        minerFee_ = value;
        onChanged();
        return this;
      }
      /**
       * optional int64 miner_fee = 5;
       *
       *

       * On a send transaction, the miner fee in satoshi. On any other type of transaction : 0 or missing
       *

       */
      public Builder clearMinerFee() {
        bitField0_ = (bitField0_ & ~0x00000008);
        minerFee_ = 0L;
        onChanged();
        return this;
      }

      // optional int64 client_fee = 6;
      private long clientFee_ ;
      /**
       * optional int64 client_fee = 6;
       *
       *

       * On a send transaction, the MultiBit/ client fee in satoshi. On any other type of transaction : 0 or missing
       *

       */
      public boolean hasClientFee() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional int64 client_fee = 6;
       *
       *

       * On a send transaction, the MultiBit/ client fee in satoshi. On any other type of transaction : 0 or missing
       *

       */
      public long getClientFee() {
        return clientFee_;
      }
      /**
       * optional int64 client_fee = 6;
       *
       *

       * On a send transaction, the MultiBit/ client fee in satoshi. On any other type of transaction : 0 or missing
       *

       */
      public Builder setClientFee(long value) {
        bitField0_ |= 0x00000010;
        clientFee_ = value;
        onChanged();
        return this;
      }
      /**
       * optional int64 client_fee = 6;
       *
       *

       * On a send transaction, the MultiBit/ client fee in satoshi. On any other type of transaction : 0 or missing
       *

       */
      public Builder clearClientFee() {
        bitField0_ = (bitField0_ & ~0x00000010);
        clientFee_ = 0L;
        onChanged();
        return this;
      }

      // optional bool sent_by_self = 7 [default = false];
      private boolean sentBySelf_ ;
      /**
       * optional bool sent_by_self = 7 [default = false];
       *
       *

       * Whether the transaction was sent by this wallet (=true) or not
       *

       */
      public boolean hasSentBySelf() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * optional bool sent_by_self = 7 [default = false];
       *
       *

       * Whether the transaction was sent by this wallet (=true) or not
       *

       */
      public boolean getSentBySelf() {
        return sentBySelf_;
      }
      /**
       * optional bool sent_by_self = 7 [default = false];
       *
       *

       * Whether the transaction was sent by this wallet (=true) or not
       *

       */
      public Builder setSentBySelf(boolean value) {
        bitField0_ |= 0x00000020;
        sentBySelf_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool sent_by_self = 7 [default = false];
       *
       *

       * Whether the transaction was sent by this wallet (=true) or not
       *

       */
      public Builder clearSentBySelf() {
        bitField0_ = (bitField0_ & ~0x00000020);
        sentBySelf_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:TransactionInfo)
    }

    static {
      defaultInstance = new TransactionInfo(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:TransactionInfo)
  }

  public interface PaymentRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string uuid = 1;
    /**
     * required string uuid = 1;
     *
     *

     * The UUID of the payment request (the BIP70 payment request itself is stored as a binary file in a directory)
     *

     */
    boolean hasUuid();
    /**
     * required string uuid = 1;
     *
     *

     * The UUID of the payment request (the BIP70 payment request itself is stored as a binary file in a directory)
     *

     */
    java.lang.String getUuid();
    /**
     * required string uuid = 1;
     *
     *

     * The UUID of the payment request (the BIP70 payment request itself is stored as a binary file in a directory)
     *

     */
    com.google.protobuf.ByteString
        getUuidBytes();

    // optional string hash = 2;
    /**
     * optional string hash = 2;
     *
     *

     * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
     *

     */
    boolean hasHash();
    /**
     * optional string hash = 2;
     *
     *

     * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
     *

     */
    java.lang.String getHash();
    /**
     * optional string hash = 2;
     *
     *

     * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
     *

     */
    com.google.protobuf.ByteString
        getHashBytes();

    // optional .FiatPayment amount_fiat = 3;
    /**
     * optional .FiatPayment amount_fiat = 3;
     *
     *

     * The fiat equivalent of the bitcoin amount
     *

     */
    boolean hasAmountFiat();
    /**
     * optional .FiatPayment amount_fiat = 3;
     *
     *

     * The fiat equivalent of the bitcoin amount
     *

     */
    org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment getAmountFiat();
    /**
     * optional .FiatPayment amount_fiat = 3;
     *
     *

     * The fiat equivalent of the bitcoin amount
     *

     */
    org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPaymentOrBuilder getAmountFiatOrBuilder();

    // optional int64 amountBTC = 4;
    /**
     * optional int64 amountBTC = 4;
     *
     *

     * The bitcoin amount, in satoshi (as per the bitcoin URI spec)
     *

     */
    boolean hasAmountBTC();
    /**
     * optional int64 amountBTC = 4;
     *
     *

     * The bitcoin amount, in satoshi (as per the bitcoin URI spec)
     *

     */
    long getAmountBTC();

    // optional string note = 5;
    /**
     * optional string note = 5;
     *
     *

     * The memo on the BIP70 payment request
     *

     */
    boolean hasNote();
    /**
     * optional string note = 5;
     *
     *

     * The memo on the BIP70 payment request
     *

     */
    java.lang.String getNote();
    /**
     * optional string note = 5;
     *
     *

     * The memo on the BIP70 payment request
     *

     */
    com.google.protobuf.ByteString
        getNoteBytes();

    // optional int64 date = 6;
    /**
     * optional int64 date = 6;
     *
     *

     * The creation datetime (millis since epoch)
     *

     */
    boolean hasDate();
    /**
     * optional int64 date = 6;
     *
     *

     * The creation datetime (millis since epoch)
     *

     */
    long getDate();

    // optional string identity_display_name = 7;
    /**
     * optional string identity_display_name = 7;
     *
     *

     * The identity display name from the PKI data
     *

     */
    boolean hasIdentityDisplayName();
    /**
     * optional string identity_display_name = 7;
     *
     *

     * The identity display name from the PKI data
     *

     */
    java.lang.String getIdentityDisplayName();
    /**
     * optional string identity_display_name = 7;
     *
     *

     * The identity display name from the PKI data
     *

     */
    com.google.protobuf.ByteString
        getIdentityDisplayNameBytes();

    // optional string trust_status = 8;
    /**
     * optional string trust_status = 8;
     *
     *

     * The trust status of the payment
     *

     */
    boolean hasTrustStatus();
    /**
     * optional string trust_status = 8;
     *
     *

     * The trust status of the payment
     *

     */
    java.lang.String getTrustStatus();
    /**
     * optional string trust_status = 8;
     *
     *

     * The trust status of the payment
     *

     */
    com.google.protobuf.ByteString
        getTrustStatusBytes();

    // optional string trust_error_message = 9;
    /**
     * optional string trust_error_message = 9;
     *
     *

     * The trust error message
     *

     */
    boolean hasTrustErrorMessage();
    /**
     * optional string trust_error_message = 9;
     *
     *

     * The trust error message
     *

     */
    java.lang.String getTrustErrorMessage();
    /**
     * optional string trust_error_message = 9;
     *
     *

     * The trust error message
     *

     */
    com.google.protobuf.ByteString
        getTrustErrorMessageBytes();

    // optional int64 expiration_date = 10;
    /**
     * optional int64 expiration_date = 10;
     *
     *

     * The payment request expiration date
     *

     */
    boolean hasExpirationDate();
    /**
     * optional int64 expiration_date = 10;
     *
     *

     * The payment request expiration date
     *

     */
    long getExpirationDate();
  }
  /**
   * Protobuf type {@code PaymentRequest}
   *
   *

   **
   * A single BIP70 payment request
   *

   */
  public static final class PaymentRequest extends
      com.google.protobuf.GeneratedMessage
      implements PaymentRequestOrBuilder {
    // Use PaymentRequest.newBuilder() to construct.
    private PaymentRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private PaymentRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final PaymentRequest defaultInstance;
    public static PaymentRequest getDefaultInstance() {
      return defaultInstance;
    }

    public PaymentRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private PaymentRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              uuid_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              hash_ = input.readBytes();
              break;
            }
            case 26: {
              org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = amountFiat_.toBuilder();
              }
              amountFiat_ = input.readMessage(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(amountFiat_);
                amountFiat_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              amountBTC_ = input.readInt64();
              break;
            }
            case 42: {
              bitField0_ |= 0x00000010;
              note_ = input.readBytes();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              date_ = input.readInt64();
              break;
            }
            case 58: {
              bitField0_ |= 0x00000040;
              identityDisplayName_ = input.readBytes();
              break;
            }
            case 66: {
              bitField0_ |= 0x00000080;
              trustStatus_ = input.readBytes();
              break;
            }
            case 74: {
              bitField0_ |= 0x00000100;
              trustErrorMessage_ = input.readBytes();
              break;
            }
            case 80: {
              bitField0_ |= 0x00000200;
              expirationDate_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_PaymentRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_PaymentRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest.class, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<PaymentRequest> PARSER =
        new com.google.protobuf.AbstractParser<PaymentRequest>() {
      public PaymentRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PaymentRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string uuid = 1;
    public static final int UUID_FIELD_NUMBER = 1;
    private java.lang.Object uuid_;
    /**
     * required string uuid = 1;
     *
     *

     * The UUID of the payment request (the BIP70 payment request itself is stored as a binary file in a directory)
     *

     */
    public boolean hasUuid() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string uuid = 1;
     *
     *

     * The UUID of the payment request (the BIP70 payment request itself is stored as a binary file in a directory)
     *

     */
    public java.lang.String getUuid() {
      java.lang.Object ref = uuid_;
      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();
        if (bs.isValidUtf8()) {
          uuid_ = s;
        }
        return s;
      }
    }
    /**
     * required string uuid = 1;
     *
     *

     * The UUID of the payment request (the BIP70 payment request itself is stored as a binary file in a directory)
     *

     */
    public com.google.protobuf.ByteString
        getUuidBytes() {
      java.lang.Object ref = uuid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        uuid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string hash = 2;
    public static final int HASH_FIELD_NUMBER = 2;
    private java.lang.Object hash_;
    /**
     * optional string hash = 2;
     *
     *

     * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
     *

     */
    public boolean hasHash() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional string hash = 2;
     *
     *

     * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
     *

     */
    public java.lang.String getHash() {
      java.lang.Object ref = hash_;
      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();
        if (bs.isValidUtf8()) {
          hash_ = s;
        }
        return s;
      }
    }
    /**
     * optional string hash = 2;
     *
     *

     * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
     *

     */
    public com.google.protobuf.ByteString
        getHashBytes() {
      java.lang.Object ref = hash_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        hash_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional .FiatPayment amount_fiat = 3;
    public static final int AMOUNT_FIAT_FIELD_NUMBER = 3;
    private org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment amountFiat_;
    /**
     * optional .FiatPayment amount_fiat = 3;
     *
     *

     * The fiat equivalent of the bitcoin amount
     *

     */
    public boolean hasAmountFiat() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional .FiatPayment amount_fiat = 3;
     *
     *

     * The fiat equivalent of the bitcoin amount
     *

     */
    public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment getAmountFiat() {
      return amountFiat_;
    }
    /**
     * optional .FiatPayment amount_fiat = 3;
     *
     *

     * The fiat equivalent of the bitcoin amount
     *

     */
    public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPaymentOrBuilder getAmountFiatOrBuilder() {
      return amountFiat_;
    }

    // optional int64 amountBTC = 4;
    public static final int AMOUNTBTC_FIELD_NUMBER = 4;
    private long amountBTC_;
    /**
     * optional int64 amountBTC = 4;
     *
     *

     * The bitcoin amount, in satoshi (as per the bitcoin URI spec)
     *

     */
    public boolean hasAmountBTC() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional int64 amountBTC = 4;
     *
     *

     * The bitcoin amount, in satoshi (as per the bitcoin URI spec)
     *

     */
    public long getAmountBTC() {
      return amountBTC_;
    }

    // optional string note = 5;
    public static final int NOTE_FIELD_NUMBER = 5;
    private java.lang.Object note_;
    /**
     * optional string note = 5;
     *
     *

     * The memo on the BIP70 payment request
     *

     */
    public boolean hasNote() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * optional string note = 5;
     *
     *

     * The memo on the BIP70 payment request
     *

     */
    public java.lang.String getNote() {
      java.lang.Object ref = note_;
      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();
        if (bs.isValidUtf8()) {
          note_ = s;
        }
        return s;
      }
    }
    /**
     * optional string note = 5;
     *
     *

     * The memo on the BIP70 payment request
     *

     */
    public com.google.protobuf.ByteString
        getNoteBytes() {
      java.lang.Object ref = note_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        note_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int64 date = 6;
    public static final int DATE_FIELD_NUMBER = 6;
    private long date_;
    /**
     * optional int64 date = 6;
     *
     *

     * The creation datetime (millis since epoch)
     *

     */
    public boolean hasDate() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * optional int64 date = 6;
     *
     *

     * The creation datetime (millis since epoch)
     *

     */
    public long getDate() {
      return date_;
    }

    // optional string identity_display_name = 7;
    public static final int IDENTITY_DISPLAY_NAME_FIELD_NUMBER = 7;
    private java.lang.Object identityDisplayName_;
    /**
     * optional string identity_display_name = 7;
     *
     *

     * The identity display name from the PKI data
     *

     */
    public boolean hasIdentityDisplayName() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * optional string identity_display_name = 7;
     *
     *

     * The identity display name from the PKI data
     *

     */
    public java.lang.String getIdentityDisplayName() {
      java.lang.Object ref = identityDisplayName_;
      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();
        if (bs.isValidUtf8()) {
          identityDisplayName_ = s;
        }
        return s;
      }
    }
    /**
     * optional string identity_display_name = 7;
     *
     *

     * The identity display name from the PKI data
     *

     */
    public com.google.protobuf.ByteString
        getIdentityDisplayNameBytes() {
      java.lang.Object ref = identityDisplayName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        identityDisplayName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string trust_status = 8;
    public static final int TRUST_STATUS_FIELD_NUMBER = 8;
    private java.lang.Object trustStatus_;
    /**
     * optional string trust_status = 8;
     *
     *

     * The trust status of the payment
     *

     */
    public boolean hasTrustStatus() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * optional string trust_status = 8;
     *
     *

     * The trust status of the payment
     *

     */
    public java.lang.String getTrustStatus() {
      java.lang.Object ref = trustStatus_;
      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();
        if (bs.isValidUtf8()) {
          trustStatus_ = s;
        }
        return s;
      }
    }
    /**
     * optional string trust_status = 8;
     *
     *

     * The trust status of the payment
     *

     */
    public com.google.protobuf.ByteString
        getTrustStatusBytes() {
      java.lang.Object ref = trustStatus_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        trustStatus_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string trust_error_message = 9;
    public static final int TRUST_ERROR_MESSAGE_FIELD_NUMBER = 9;
    private java.lang.Object trustErrorMessage_;
    /**
     * optional string trust_error_message = 9;
     *
     *

     * The trust error message
     *

     */
    public boolean hasTrustErrorMessage() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * optional string trust_error_message = 9;
     *
     *

     * The trust error message
     *

     */
    public java.lang.String getTrustErrorMessage() {
      java.lang.Object ref = trustErrorMessage_;
      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();
        if (bs.isValidUtf8()) {
          trustErrorMessage_ = s;
        }
        return s;
      }
    }
    /**
     * optional string trust_error_message = 9;
     *
     *

     * The trust error message
     *

     */
    public com.google.protobuf.ByteString
        getTrustErrorMessageBytes() {
      java.lang.Object ref = trustErrorMessage_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        trustErrorMessage_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int64 expiration_date = 10;
    public static final int EXPIRATION_DATE_FIELD_NUMBER = 10;
    private long expirationDate_;
    /**
     * optional int64 expiration_date = 10;
     *
     *

     * The payment request expiration date
     *

     */
    public boolean hasExpirationDate() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    /**
     * optional int64 expiration_date = 10;
     *
     *

     * The payment request expiration date
     *

     */
    public long getExpirationDate() {
      return expirationDate_;
    }

    private void initFields() {
      uuid_ = "";
      hash_ = "";
      amountFiat_ = org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.getDefaultInstance();
      amountBTC_ = 0L;
      note_ = "";
      date_ = 0L;
      identityDisplayName_ = "";
      trustStatus_ = "";
      trustErrorMessage_ = "";
      expirationDate_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasUuid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasAmountFiat()) {
        if (!getAmountFiat().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getUuidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getHashBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, amountFiat_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt64(4, amountBTC_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBytes(5, getNoteBytes());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeInt64(6, date_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeBytes(7, getIdentityDisplayNameBytes());
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeBytes(8, getTrustStatusBytes());
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeBytes(9, getTrustErrorMessageBytes());
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeInt64(10, expirationDate_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getUuidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getHashBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, amountFiat_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, amountBTC_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, getNoteBytes());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(6, date_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(7, getIdentityDisplayNameBytes());
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(8, getTrustStatusBytes());
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(9, getTrustErrorMessageBytes());
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(10, expirationDate_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code PaymentRequest}
     *
     *

     **
     * A single BIP70 payment request
     *

     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_PaymentRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_PaymentRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest.class, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest.Builder.class);
      }

      // Construct using org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getAmountFiatFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        uuid_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        hash_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        if (amountFiatBuilder_ == null) {
          amountFiat_ = org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.getDefaultInstance();
        } else {
          amountFiatBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        amountBTC_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000008);
        note_ = "";
        bitField0_ = (bitField0_ & ~0x00000010);
        date_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000020);
        identityDisplayName_ = "";
        bitField0_ = (bitField0_ & ~0x00000040);
        trustStatus_ = "";
        bitField0_ = (bitField0_ & ~0x00000080);
        trustErrorMessage_ = "";
        bitField0_ = (bitField0_ & ~0x00000100);
        expirationDate_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000200);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_PaymentRequest_descriptor;
      }

      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest getDefaultInstanceForType() {
        return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest.getDefaultInstance();
      }

      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest build() {
        org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest buildPartial() {
        org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest result = new org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.uuid_ = uuid_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.hash_ = hash_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (amountFiatBuilder_ == null) {
          result.amountFiat_ = amountFiat_;
        } else {
          result.amountFiat_ = amountFiatBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.amountBTC_ = amountBTC_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.note_ = note_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.date_ = date_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.identityDisplayName_ = identityDisplayName_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.trustStatus_ = trustStatus_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000100;
        }
        result.trustErrorMessage_ = trustErrorMessage_;
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000200;
        }
        result.expirationDate_ = expirationDate_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest) {
          return mergeFrom((org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest other) {
        if (other == org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest.getDefaultInstance()) return this;
        if (other.hasUuid()) {
          bitField0_ |= 0x00000001;
          uuid_ = other.uuid_;
          onChanged();
        }
        if (other.hasHash()) {
          bitField0_ |= 0x00000002;
          hash_ = other.hash_;
          onChanged();
        }
        if (other.hasAmountFiat()) {
          mergeAmountFiat(other.getAmountFiat());
        }
        if (other.hasAmountBTC()) {
          setAmountBTC(other.getAmountBTC());
        }
        if (other.hasNote()) {
          bitField0_ |= 0x00000010;
          note_ = other.note_;
          onChanged();
        }
        if (other.hasDate()) {
          setDate(other.getDate());
        }
        if (other.hasIdentityDisplayName()) {
          bitField0_ |= 0x00000040;
          identityDisplayName_ = other.identityDisplayName_;
          onChanged();
        }
        if (other.hasTrustStatus()) {
          bitField0_ |= 0x00000080;
          trustStatus_ = other.trustStatus_;
          onChanged();
        }
        if (other.hasTrustErrorMessage()) {
          bitField0_ |= 0x00000100;
          trustErrorMessage_ = other.trustErrorMessage_;
          onChanged();
        }
        if (other.hasExpirationDate()) {
          setExpirationDate(other.getExpirationDate());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasUuid()) {

          return false;
        }
        if (hasAmountFiat()) {
          if (!getAmountFiat().isInitialized()) {

            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string uuid = 1;
      private java.lang.Object uuid_ = "";
      /**
       * required string uuid = 1;
       *
       *

       * The UUID of the payment request (the BIP70 payment request itself is stored as a binary file in a directory)
       *

       */
      public boolean hasUuid() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string uuid = 1;
       *
       *

       * The UUID of the payment request (the BIP70 payment request itself is stored as a binary file in a directory)
       *

       */
      public java.lang.String getUuid() {
        java.lang.Object ref = uuid_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          uuid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string uuid = 1;
       *
       *

       * The UUID of the payment request (the BIP70 payment request itself is stored as a binary file in a directory)
       *

       */
      public com.google.protobuf.ByteString
          getUuidBytes() {
        java.lang.Object ref = uuid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          uuid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string uuid = 1;
       *
       *

       * The UUID of the payment request (the BIP70 payment request itself is stored as a binary file in a directory)
       *

       */
      public Builder setUuid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uuid_ = value;
        onChanged();
        return this;
      }
      /**
       * required string uuid = 1;
       *
       *

       * The UUID of the payment request (the BIP70 payment request itself is stored as a binary file in a directory)
       *

       */
      public Builder clearUuid() {
        bitField0_ = (bitField0_ & ~0x00000001);
        uuid_ = getDefaultInstance().getUuid();
        onChanged();
        return this;
      }
      /**
       * required string uuid = 1;
       *
       *

       * The UUID of the payment request (the BIP70 payment request itself is stored as a binary file in a directory)
       *

       */
      public Builder setUuidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uuid_ = value;
        onChanged();
        return this;
      }

      // optional string hash = 2;
      private java.lang.Object hash_ = "";
      /**
       * optional string hash = 2;
       *
       *

       * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
       *

       */
      public boolean hasHash() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional string hash = 2;
       *
       *

       * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
       *

       */
      public java.lang.String getHash() {
        java.lang.Object ref = hash_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          hash_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string hash = 2;
       *
       *

       * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
       *

       */
      public com.google.protobuf.ByteString
          getHashBytes() {
        java.lang.Object ref = hash_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          hash_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string hash = 2;
       *
       *

       * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
       *

       */
      public Builder setHash(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        hash_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string hash = 2;
       *
       *

       * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
       *

       */
      public Builder clearHash() {
        bitField0_ = (bitField0_ & ~0x00000002);
        hash_ = getDefaultInstance().getHash();
        onChanged();
        return this;
      }
      /**
       * optional string hash = 2;
       *
       *

       * The transaction hash (i.e. the transaction id as per the wallet Transaction.hash.toString)
       *

       */
      public Builder setHashBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        hash_ = value;
        onChanged();
        return this;
      }

      // optional .FiatPayment amount_fiat = 3;
      private org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment amountFiat_ = org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.Builder, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPaymentOrBuilder> amountFiatBuilder_;
      /**
       * optional .FiatPayment amount_fiat = 3;
       *
       *

       * The fiat equivalent of the bitcoin amount
       *

       */
      public boolean hasAmountFiat() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional .FiatPayment amount_fiat = 3;
       *
       *

       * The fiat equivalent of the bitcoin amount
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment getAmountFiat() {
        if (amountFiatBuilder_ == null) {
          return amountFiat_;
        } else {
          return amountFiatBuilder_.getMessage();
        }
      }
      /**
       * optional .FiatPayment amount_fiat = 3;
       *
       *

       * The fiat equivalent of the bitcoin amount
       *

       */
      public Builder setAmountFiat(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment value) {
        if (amountFiatBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          amountFiat_ = value;
          onChanged();
        } else {
          amountFiatBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * optional .FiatPayment amount_fiat = 3;
       *
       *

       * The fiat equivalent of the bitcoin amount
       *

       */
      public Builder setAmountFiat(
          org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.Builder builderForValue) {
        if (amountFiatBuilder_ == null) {
          amountFiat_ = builderForValue.build();
          onChanged();
        } else {
          amountFiatBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * optional .FiatPayment amount_fiat = 3;
       *
       *

       * The fiat equivalent of the bitcoin amount
       *

       */
      public Builder mergeAmountFiat(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment value) {
        if (amountFiatBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              amountFiat_ != org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.getDefaultInstance()) {
            amountFiat_ =
              org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.newBuilder(amountFiat_).mergeFrom(value).buildPartial();
          } else {
            amountFiat_ = value;
          }
          onChanged();
        } else {
          amountFiatBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * optional .FiatPayment amount_fiat = 3;
       *
       *

       * The fiat equivalent of the bitcoin amount
       *

       */
      public Builder clearAmountFiat() {
        if (amountFiatBuilder_ == null) {
          amountFiat_ = org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.getDefaultInstance();
          onChanged();
        } else {
          amountFiatBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * optional .FiatPayment amount_fiat = 3;
       *
       *

       * The fiat equivalent of the bitcoin amount
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.Builder getAmountFiatBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getAmountFiatFieldBuilder().getBuilder();
      }
      /**
       * optional .FiatPayment amount_fiat = 3;
       *
       *

       * The fiat equivalent of the bitcoin amount
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPaymentOrBuilder getAmountFiatOrBuilder() {
        if (amountFiatBuilder_ != null) {
          return amountFiatBuilder_.getMessageOrBuilder();
        } else {
          return amountFiat_;
        }
      }
      /**
       * optional .FiatPayment amount_fiat = 3;
       *
       *

       * The fiat equivalent of the bitcoin amount
       *

       */
      private com.google.protobuf.SingleFieldBuilder<
          org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.Builder, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPaymentOrBuilder>
          getAmountFiatFieldBuilder() {
        if (amountFiatBuilder_ == null) {
          amountFiatBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPayment.Builder, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.FiatPaymentOrBuilder>(
                  amountFiat_,
                  getParentForChildren(),
                  isClean());
          amountFiat_ = null;
        }
        return amountFiatBuilder_;
      }

      // optional int64 amountBTC = 4;
      private long amountBTC_ ;
      /**
       * optional int64 amountBTC = 4;
       *
       *

       * The bitcoin amount, in satoshi (as per the bitcoin URI spec)
       *

       */
      public boolean hasAmountBTC() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional int64 amountBTC = 4;
       *
       *

       * The bitcoin amount, in satoshi (as per the bitcoin URI spec)
       *

       */
      public long getAmountBTC() {
        return amountBTC_;
      }
      /**
       * optional int64 amountBTC = 4;
       *
       *

       * The bitcoin amount, in satoshi (as per the bitcoin URI spec)
       *

       */
      public Builder setAmountBTC(long value) {
        bitField0_ |= 0x00000008;
        amountBTC_ = value;
        onChanged();
        return this;
      }
      /**
       * optional int64 amountBTC = 4;
       *
       *

       * The bitcoin amount, in satoshi (as per the bitcoin URI spec)
       *

       */
      public Builder clearAmountBTC() {
        bitField0_ = (bitField0_ & ~0x00000008);
        amountBTC_ = 0L;
        onChanged();
        return this;
      }

      // optional string note = 5;
      private java.lang.Object note_ = "";
      /**
       * optional string note = 5;
       *
       *

       * The memo on the BIP70 payment request
       *

       */
      public boolean hasNote() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional string note = 5;
       *
       *

       * The memo on the BIP70 payment request
       *

       */
      public java.lang.String getNote() {
        java.lang.Object ref = note_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          note_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string note = 5;
       *
       *

       * The memo on the BIP70 payment request
       *

       */
      public com.google.protobuf.ByteString
          getNoteBytes() {
        java.lang.Object ref = note_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          note_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string note = 5;
       *
       *

       * The memo on the BIP70 payment request
       *

       */
      public Builder setNote(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        note_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string note = 5;
       *
       *

       * The memo on the BIP70 payment request
       *

       */
      public Builder clearNote() {
        bitField0_ = (bitField0_ & ~0x00000010);
        note_ = getDefaultInstance().getNote();
        onChanged();
        return this;
      }
      /**
       * optional string note = 5;
       *
       *

       * The memo on the BIP70 payment request
       *

       */
      public Builder setNoteBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        note_ = value;
        onChanged();
        return this;
      }

      // optional int64 date = 6;
      private long date_ ;
      /**
       * optional int64 date = 6;
       *
       *

       * The creation datetime (millis since epoch)
       *

       */
      public boolean hasDate() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * optional int64 date = 6;
       *
       *

       * The creation datetime (millis since epoch)
       *

       */
      public long getDate() {
        return date_;
      }
      /**
       * optional int64 date = 6;
       *
       *

       * The creation datetime (millis since epoch)
       *

       */
      public Builder setDate(long value) {
        bitField0_ |= 0x00000020;
        date_ = value;
        onChanged();
        return this;
      }
      /**
       * optional int64 date = 6;
       *
       *

       * The creation datetime (millis since epoch)
       *

       */
      public Builder clearDate() {
        bitField0_ = (bitField0_ & ~0x00000020);
        date_ = 0L;
        onChanged();
        return this;
      }

      // optional string identity_display_name = 7;
      private java.lang.Object identityDisplayName_ = "";
      /**
       * optional string identity_display_name = 7;
       *
       *

       * The identity display name from the PKI data
       *

       */
      public boolean hasIdentityDisplayName() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * optional string identity_display_name = 7;
       *
       *

       * The identity display name from the PKI data
       *

       */
      public java.lang.String getIdentityDisplayName() {
        java.lang.Object ref = identityDisplayName_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          identityDisplayName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string identity_display_name = 7;
       *
       *

       * The identity display name from the PKI data
       *

       */
      public com.google.protobuf.ByteString
          getIdentityDisplayNameBytes() {
        java.lang.Object ref = identityDisplayName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          identityDisplayName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string identity_display_name = 7;
       *
       *

       * The identity display name from the PKI data
       *

       */
      public Builder setIdentityDisplayName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        identityDisplayName_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string identity_display_name = 7;
       *
       *

       * The identity display name from the PKI data
       *

       */
      public Builder clearIdentityDisplayName() {
        bitField0_ = (bitField0_ & ~0x00000040);
        identityDisplayName_ = getDefaultInstance().getIdentityDisplayName();
        onChanged();
        return this;
      }
      /**
       * optional string identity_display_name = 7;
       *
       *

       * The identity display name from the PKI data
       *

       */
      public Builder setIdentityDisplayNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        identityDisplayName_ = value;
        onChanged();
        return this;
      }

      // optional string trust_status = 8;
      private java.lang.Object trustStatus_ = "";
      /**
       * optional string trust_status = 8;
       *
       *

       * The trust status of the payment
       *

       */
      public boolean hasTrustStatus() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * optional string trust_status = 8;
       *
       *

       * The trust status of the payment
       *

       */
      public java.lang.String getTrustStatus() {
        java.lang.Object ref = trustStatus_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          trustStatus_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string trust_status = 8;
       *
       *

       * The trust status of the payment
       *

       */
      public com.google.protobuf.ByteString
          getTrustStatusBytes() {
        java.lang.Object ref = trustStatus_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          trustStatus_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string trust_status = 8;
       *
       *

       * The trust status of the payment
       *

       */
      public Builder setTrustStatus(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        trustStatus_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string trust_status = 8;
       *
       *

       * The trust status of the payment
       *

       */
      public Builder clearTrustStatus() {
        bitField0_ = (bitField0_ & ~0x00000080);
        trustStatus_ = getDefaultInstance().getTrustStatus();
        onChanged();
        return this;
      }
      /**
       * optional string trust_status = 8;
       *
       *

       * The trust status of the payment
       *

       */
      public Builder setTrustStatusBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        trustStatus_ = value;
        onChanged();
        return this;
      }

      // optional string trust_error_message = 9;
      private java.lang.Object trustErrorMessage_ = "";
      /**
       * optional string trust_error_message = 9;
       *
       *

       * The trust error message
       *

       */
      public boolean hasTrustErrorMessage() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * optional string trust_error_message = 9;
       *
       *

       * The trust error message
       *

       */
      public java.lang.String getTrustErrorMessage() {
        java.lang.Object ref = trustErrorMessage_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          trustErrorMessage_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string trust_error_message = 9;
       *
       *

       * The trust error message
       *

       */
      public com.google.protobuf.ByteString
          getTrustErrorMessageBytes() {
        java.lang.Object ref = trustErrorMessage_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          trustErrorMessage_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string trust_error_message = 9;
       *
       *

       * The trust error message
       *

       */
      public Builder setTrustErrorMessage(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000100;
        trustErrorMessage_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string trust_error_message = 9;
       *
       *

       * The trust error message
       *

       */
      public Builder clearTrustErrorMessage() {
        bitField0_ = (bitField0_ & ~0x00000100);
        trustErrorMessage_ = getDefaultInstance().getTrustErrorMessage();
        onChanged();
        return this;
      }
      /**
       * optional string trust_error_message = 9;
       *
       *

       * The trust error message
       *

       */
      public Builder setTrustErrorMessageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000100;
        trustErrorMessage_ = value;
        onChanged();
        return this;
      }

      // optional int64 expiration_date = 10;
      private long expirationDate_ ;
      /**
       * optional int64 expiration_date = 10;
       *
       *

       * The payment request expiration date
       *

       */
      public boolean hasExpirationDate() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * optional int64 expiration_date = 10;
       *
       *

       * The payment request expiration date
       *

       */
      public long getExpirationDate() {
        return expirationDate_;
      }
      /**
       * optional int64 expiration_date = 10;
       *
       *

       * The payment request expiration date
       *

       */
      public Builder setExpirationDate(long value) {
        bitField0_ |= 0x00000200;
        expirationDate_ = value;
        onChanged();
        return this;
      }
      /**
       * optional int64 expiration_date = 10;
       *
       *

       * The payment request expiration date
       *

       */
      public Builder clearExpirationDate() {
        bitField0_ = (bitField0_ & ~0x00000200);
        expirationDate_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:PaymentRequest)
    }

    static {
      defaultInstance = new PaymentRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:PaymentRequest)
  }

  public interface PaymentsOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated .MBHDPaymentRequest mbhd_payment_request = 1;
    /**
     * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
     *
     *

     * Collection of MBHD payment requests
     *

     */
    java.util.List<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest>
        getMbhdPaymentRequestList();
    /**
     * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
     *
     *

     * Collection of MBHD payment requests
     *

     */
    org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest getMbhdPaymentRequest(int index);
    /**
     * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
     *
     *

     * Collection of MBHD payment requests
     *

     */
    int getMbhdPaymentRequestCount();
    /**
     * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
     *
     *

     * Collection of MBHD payment requests
     *

     */
    java.util.List<? extends org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequestOrBuilder>
        getMbhdPaymentRequestOrBuilderList();
    /**
     * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
     *
     *

     * Collection of MBHD payment requests
     *

     */
    org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequestOrBuilder getMbhdPaymentRequestOrBuilder(
        int index);

    // repeated .TransactionInfo transaction_info = 2;
    /**
     * repeated .TransactionInfo transaction_info = 2;
     *
     *

     * Collection of transactions
     *

     */
    java.util.List<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo>
        getTransactionInfoList();
    /**
     * repeated .TransactionInfo transaction_info = 2;
     *
     *

     * Collection of transactions
     *

     */
    org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo getTransactionInfo(int index);
    /**
     * repeated .TransactionInfo transaction_info = 2;
     *
     *

     * Collection of transactions
     *

     */
    int getTransactionInfoCount();
    /**
     * repeated .TransactionInfo transaction_info = 2;
     *
     *

     * Collection of transactions
     *

     */
    java.util.List<? extends org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfoOrBuilder>
        getTransactionInfoOrBuilderList();
    /**
     * repeated .TransactionInfo transaction_info = 2;
     *
     *

     * Collection of transactions
     *

     */
    org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfoOrBuilder getTransactionInfoOrBuilder(
        int index);

    // repeated .PaymentRequest payment_request = 4;
    /**
     * repeated .PaymentRequest payment_request = 4;
     *
     *

     * Collection of BIP70 payment requests
     *

     */
    java.util.List<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest>
        getPaymentRequestList();
    /**
     * repeated .PaymentRequest payment_request = 4;
     *
     *

     * Collection of BIP70 payment requests
     *

     */
    org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest getPaymentRequest(int index);
    /**
     * repeated .PaymentRequest payment_request = 4;
     *
     *

     * Collection of BIP70 payment requests
     *

     */
    int getPaymentRequestCount();
    /**
     * repeated .PaymentRequest payment_request = 4;
     *
     *

     * Collection of BIP70 payment requests
     *

     */
    java.util.List<? extends org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequestOrBuilder>
        getPaymentRequestOrBuilderList();
    /**
     * repeated .PaymentRequest payment_request = 4;
     *
     *

     * Collection of BIP70 payment requests
     *

     */
    org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequestOrBuilder getPaymentRequestOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code Payments}
   *
   *

   **
   * The top level message
   *

   */
  public static final class Payments extends
      com.google.protobuf.GeneratedMessage
      implements PaymentsOrBuilder {
    // Use Payments.newBuilder() to construct.
    private Payments(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Payments(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final Payments defaultInstance;
    public static Payments getDefaultInstance() {
      return defaultInstance;
    }

    public Payments getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Payments(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                mbhdPaymentRequest_ = new java.util.ArrayList<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest>();
                mutable_bitField0_ |= 0x00000001;
              }
              mbhdPaymentRequest_.add(input.readMessage(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest.PARSER, extensionRegistry));
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                transactionInfo_ = new java.util.ArrayList<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo>();
                mutable_bitField0_ |= 0x00000002;
              }
              transactionInfo_.add(input.readMessage(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo.PARSER, extensionRegistry));
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                paymentRequest_ = new java.util.ArrayList<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest>();
                mutable_bitField0_ |= 0x00000004;
              }
              paymentRequest_.add(input.readMessage(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          mbhdPaymentRequest_ = java.util.Collections.unmodifiableList(mbhdPaymentRequest_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          transactionInfo_ = java.util.Collections.unmodifiableList(transactionInfo_);
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          paymentRequest_ = java.util.Collections.unmodifiableList(paymentRequest_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_Payments_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_Payments_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments.class, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments.Builder.class);
    }

    public static com.google.protobuf.Parser<Payments> PARSER =
        new com.google.protobuf.AbstractParser<Payments>() {
      public Payments parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Payments(input, extensionRegistry);
      }
    };

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

    // repeated .MBHDPaymentRequest mbhd_payment_request = 1;
    public static final int MBHD_PAYMENT_REQUEST_FIELD_NUMBER = 1;
    private java.util.List<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest> mbhdPaymentRequest_;
    /**
     * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
     *
     *

     * Collection of MBHD payment requests
     *

     */
    public java.util.List<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest> getMbhdPaymentRequestList() {
      return mbhdPaymentRequest_;
    }
    /**
     * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
     *
     *

     * Collection of MBHD payment requests
     *

     */
    public java.util.List<? extends org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequestOrBuilder>
        getMbhdPaymentRequestOrBuilderList() {
      return mbhdPaymentRequest_;
    }
    /**
     * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
     *
     *

     * Collection of MBHD payment requests
     *

     */
    public int getMbhdPaymentRequestCount() {
      return mbhdPaymentRequest_.size();
    }
    /**
     * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
     *
     *

     * Collection of MBHD payment requests
     *

     */
    public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest getMbhdPaymentRequest(int index) {
      return mbhdPaymentRequest_.get(index);
    }
    /**
     * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
     *
     *

     * Collection of MBHD payment requests
     *

     */
    public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequestOrBuilder getMbhdPaymentRequestOrBuilder(
        int index) {
      return mbhdPaymentRequest_.get(index);
    }

    // repeated .TransactionInfo transaction_info = 2;
    public static final int TRANSACTION_INFO_FIELD_NUMBER = 2;
    private java.util.List<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo> transactionInfo_;
    /**
     * repeated .TransactionInfo transaction_info = 2;
     *
     *

     * Collection of transactions
     *

     */
    public java.util.List<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo> getTransactionInfoList() {
      return transactionInfo_;
    }
    /**
     * repeated .TransactionInfo transaction_info = 2;
     *
     *

     * Collection of transactions
     *

     */
    public java.util.List<? extends org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfoOrBuilder>
        getTransactionInfoOrBuilderList() {
      return transactionInfo_;
    }
    /**
     * repeated .TransactionInfo transaction_info = 2;
     *
     *

     * Collection of transactions
     *

     */
    public int getTransactionInfoCount() {
      return transactionInfo_.size();
    }
    /**
     * repeated .TransactionInfo transaction_info = 2;
     *
     *

     * Collection of transactions
     *

     */
    public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo getTransactionInfo(int index) {
      return transactionInfo_.get(index);
    }
    /**
     * repeated .TransactionInfo transaction_info = 2;
     *
     *

     * Collection of transactions
     *

     */
    public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfoOrBuilder getTransactionInfoOrBuilder(
        int index) {
      return transactionInfo_.get(index);
    }

    // repeated .PaymentRequest payment_request = 4;
    public static final int PAYMENT_REQUEST_FIELD_NUMBER = 4;
    private java.util.List<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest> paymentRequest_;
    /**
     * repeated .PaymentRequest payment_request = 4;
     *
     *

     * Collection of BIP70 payment requests
     *

     */
    public java.util.List<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest> getPaymentRequestList() {
      return paymentRequest_;
    }
    /**
     * repeated .PaymentRequest payment_request = 4;
     *
     *

     * Collection of BIP70 payment requests
     *

     */
    public java.util.List<? extends org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequestOrBuilder>
        getPaymentRequestOrBuilderList() {
      return paymentRequest_;
    }
    /**
     * repeated .PaymentRequest payment_request = 4;
     *
     *

     * Collection of BIP70 payment requests
     *

     */
    public int getPaymentRequestCount() {
      return paymentRequest_.size();
    }
    /**
     * repeated .PaymentRequest payment_request = 4;
     *
     *

     * Collection of BIP70 payment requests
     *

     */
    public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest getPaymentRequest(int index) {
      return paymentRequest_.get(index);
    }
    /**
     * repeated .PaymentRequest payment_request = 4;
     *
     *

     * Collection of BIP70 payment requests
     *

     */
    public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequestOrBuilder getPaymentRequestOrBuilder(
        int index) {
      return paymentRequest_.get(index);
    }

    private void initFields() {
      mbhdPaymentRequest_ = java.util.Collections.emptyList();
      transactionInfo_ = java.util.Collections.emptyList();
      paymentRequest_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      for (int i = 0; i < getMbhdPaymentRequestCount(); i++) {
        if (!getMbhdPaymentRequest(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getTransactionInfoCount(); i++) {
        if (!getTransactionInfo(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getPaymentRequestCount(); i++) {
        if (!getPaymentRequest(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < mbhdPaymentRequest_.size(); i++) {
        output.writeMessage(1, mbhdPaymentRequest_.get(i));
      }
      for (int i = 0; i < transactionInfo_.size(); i++) {
        output.writeMessage(2, transactionInfo_.get(i));
      }
      for (int i = 0; i < paymentRequest_.size(); i++) {
        output.writeMessage(4, paymentRequest_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < mbhdPaymentRequest_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, mbhdPaymentRequest_.get(i));
      }
      for (int i = 0; i < transactionInfo_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, transactionInfo_.get(i));
      }
      for (int i = 0; i < paymentRequest_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, paymentRequest_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Payments}
     *
     *

     **
     * The top level message
     *

     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_Payments_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_Payments_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments.class, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments.Builder.class);
      }

      // Construct using org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getMbhdPaymentRequestFieldBuilder();
          getTransactionInfoFieldBuilder();
          getPaymentRequestFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (mbhdPaymentRequestBuilder_ == null) {
          mbhdPaymentRequest_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          mbhdPaymentRequestBuilder_.clear();
        }
        if (transactionInfoBuilder_ == null) {
          transactionInfo_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          transactionInfoBuilder_.clear();
        }
        if (paymentRequestBuilder_ == null) {
          paymentRequest_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          paymentRequestBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.internal_static_Payments_descriptor;
      }

      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments getDefaultInstanceForType() {
        return org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments.getDefaultInstance();
      }

      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments build() {
        org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments buildPartial() {
        org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments result = new org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments(this);
        int from_bitField0_ = bitField0_;
        if (mbhdPaymentRequestBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            mbhdPaymentRequest_ = java.util.Collections.unmodifiableList(mbhdPaymentRequest_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.mbhdPaymentRequest_ = mbhdPaymentRequest_;
        } else {
          result.mbhdPaymentRequest_ = mbhdPaymentRequestBuilder_.build();
        }
        if (transactionInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            transactionInfo_ = java.util.Collections.unmodifiableList(transactionInfo_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.transactionInfo_ = transactionInfo_;
        } else {
          result.transactionInfo_ = transactionInfoBuilder_.build();
        }
        if (paymentRequestBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            paymentRequest_ = java.util.Collections.unmodifiableList(paymentRequest_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.paymentRequest_ = paymentRequest_;
        } else {
          result.paymentRequest_ = paymentRequestBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments) {
          return mergeFrom((org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments other) {
        if (other == org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments.getDefaultInstance()) return this;
        if (mbhdPaymentRequestBuilder_ == null) {
          if (!other.mbhdPaymentRequest_.isEmpty()) {
            if (mbhdPaymentRequest_.isEmpty()) {
              mbhdPaymentRequest_ = other.mbhdPaymentRequest_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureMbhdPaymentRequestIsMutable();
              mbhdPaymentRequest_.addAll(other.mbhdPaymentRequest_);
            }
            onChanged();
          }
        } else {
          if (!other.mbhdPaymentRequest_.isEmpty()) {
            if (mbhdPaymentRequestBuilder_.isEmpty()) {
              mbhdPaymentRequestBuilder_.dispose();
              mbhdPaymentRequestBuilder_ = null;
              mbhdPaymentRequest_ = other.mbhdPaymentRequest_;
              bitField0_ = (bitField0_ & ~0x00000001);
              mbhdPaymentRequestBuilder_ =
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getMbhdPaymentRequestFieldBuilder() : null;
            } else {
              mbhdPaymentRequestBuilder_.addAllMessages(other.mbhdPaymentRequest_);
            }
          }
        }
        if (transactionInfoBuilder_ == null) {
          if (!other.transactionInfo_.isEmpty()) {
            if (transactionInfo_.isEmpty()) {
              transactionInfo_ = other.transactionInfo_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureTransactionInfoIsMutable();
              transactionInfo_.addAll(other.transactionInfo_);
            }
            onChanged();
          }
        } else {
          if (!other.transactionInfo_.isEmpty()) {
            if (transactionInfoBuilder_.isEmpty()) {
              transactionInfoBuilder_.dispose();
              transactionInfoBuilder_ = null;
              transactionInfo_ = other.transactionInfo_;
              bitField0_ = (bitField0_ & ~0x00000002);
              transactionInfoBuilder_ =
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getTransactionInfoFieldBuilder() : null;
            } else {
              transactionInfoBuilder_.addAllMessages(other.transactionInfo_);
            }
          }
        }
        if (paymentRequestBuilder_ == null) {
          if (!other.paymentRequest_.isEmpty()) {
            if (paymentRequest_.isEmpty()) {
              paymentRequest_ = other.paymentRequest_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensurePaymentRequestIsMutable();
              paymentRequest_.addAll(other.paymentRequest_);
            }
            onChanged();
          }
        } else {
          if (!other.paymentRequest_.isEmpty()) {
            if (paymentRequestBuilder_.isEmpty()) {
              paymentRequestBuilder_.dispose();
              paymentRequestBuilder_ = null;
              paymentRequest_ = other.paymentRequest_;
              bitField0_ = (bitField0_ & ~0x00000004);
              paymentRequestBuilder_ =
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getPaymentRequestFieldBuilder() : null;
            } else {
              paymentRequestBuilder_.addAllMessages(other.paymentRequest_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getMbhdPaymentRequestCount(); i++) {
          if (!getMbhdPaymentRequest(i).isInitialized()) {

            return false;
          }
        }
        for (int i = 0; i < getTransactionInfoCount(); i++) {
          if (!getTransactionInfo(i).isInitialized()) {

            return false;
          }
        }
        for (int i = 0; i < getPaymentRequestCount(); i++) {
          if (!getPaymentRequest(i).isInitialized()) {

            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.multibit.hd.core.protobuf.MBHDPaymentsProtos.Payments) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .MBHDPaymentRequest mbhd_payment_request = 1;
      private java.util.List<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest> mbhdPaymentRequest_ =
        java.util.Collections.emptyList();
      private void ensureMbhdPaymentRequestIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          mbhdPaymentRequest_ = new java.util.ArrayList<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest>(mbhdPaymentRequest_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest.Builder, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequestOrBuilder> mbhdPaymentRequestBuilder_;

      /**
       * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
       *
       *

       * Collection of MBHD payment requests
       *

       */
      public java.util.List<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest> getMbhdPaymentRequestList() {
        if (mbhdPaymentRequestBuilder_ == null) {
          return java.util.Collections.unmodifiableList(mbhdPaymentRequest_);
        } else {
          return mbhdPaymentRequestBuilder_.getMessageList();
        }
      }
      /**
       * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
       *
       *

       * Collection of MBHD payment requests
       *

       */
      public int getMbhdPaymentRequestCount() {
        if (mbhdPaymentRequestBuilder_ == null) {
          return mbhdPaymentRequest_.size();
        } else {
          return mbhdPaymentRequestBuilder_.getCount();
        }
      }
      /**
       * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
       *
       *

       * Collection of MBHD payment requests
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest getMbhdPaymentRequest(int index) {
        if (mbhdPaymentRequestBuilder_ == null) {
          return mbhdPaymentRequest_.get(index);
        } else {
          return mbhdPaymentRequestBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
       *
       *

       * Collection of MBHD payment requests
       *

       */
      public Builder setMbhdPaymentRequest(
          int index, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest value) {
        if (mbhdPaymentRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMbhdPaymentRequestIsMutable();
          mbhdPaymentRequest_.set(index, value);
          onChanged();
        } else {
          mbhdPaymentRequestBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
       *
       *

       * Collection of MBHD payment requests
       *

       */
      public Builder setMbhdPaymentRequest(
          int index, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest.Builder builderForValue) {
        if (mbhdPaymentRequestBuilder_ == null) {
          ensureMbhdPaymentRequestIsMutable();
          mbhdPaymentRequest_.set(index, builderForValue.build());
          onChanged();
        } else {
          mbhdPaymentRequestBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
       *
       *

       * Collection of MBHD payment requests
       *

       */
      public Builder addMbhdPaymentRequest(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest value) {
        if (mbhdPaymentRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMbhdPaymentRequestIsMutable();
          mbhdPaymentRequest_.add(value);
          onChanged();
        } else {
          mbhdPaymentRequestBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
       *
       *

       * Collection of MBHD payment requests
       *

       */
      public Builder addMbhdPaymentRequest(
          int index, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest value) {
        if (mbhdPaymentRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMbhdPaymentRequestIsMutable();
          mbhdPaymentRequest_.add(index, value);
          onChanged();
        } else {
          mbhdPaymentRequestBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
       *
       *

       * Collection of MBHD payment requests
       *

       */
      public Builder addMbhdPaymentRequest(
          org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest.Builder builderForValue) {
        if (mbhdPaymentRequestBuilder_ == null) {
          ensureMbhdPaymentRequestIsMutable();
          mbhdPaymentRequest_.add(builderForValue.build());
          onChanged();
        } else {
          mbhdPaymentRequestBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
       *
       *

       * Collection of MBHD payment requests
       *

       */
      public Builder addMbhdPaymentRequest(
          int index, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest.Builder builderForValue) {
        if (mbhdPaymentRequestBuilder_ == null) {
          ensureMbhdPaymentRequestIsMutable();
          mbhdPaymentRequest_.add(index, builderForValue.build());
          onChanged();
        } else {
          mbhdPaymentRequestBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
       *
       *

       * Collection of MBHD payment requests
       *

       */
      public Builder addAllMbhdPaymentRequest(
          java.lang.Iterable<? extends org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest> values) {
        if (mbhdPaymentRequestBuilder_ == null) {
          ensureMbhdPaymentRequestIsMutable();
          super.addAll(values, mbhdPaymentRequest_);
          onChanged();
        } else {
          mbhdPaymentRequestBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
       *
       *

       * Collection of MBHD payment requests
       *

       */
      public Builder clearMbhdPaymentRequest() {
        if (mbhdPaymentRequestBuilder_ == null) {
          mbhdPaymentRequest_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          mbhdPaymentRequestBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
       *
       *

       * Collection of MBHD payment requests
       *

       */
      public Builder removeMbhdPaymentRequest(int index) {
        if (mbhdPaymentRequestBuilder_ == null) {
          ensureMbhdPaymentRequestIsMutable();
          mbhdPaymentRequest_.remove(index);
          onChanged();
        } else {
          mbhdPaymentRequestBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
       *
       *

       * Collection of MBHD payment requests
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest.Builder getMbhdPaymentRequestBuilder(
          int index) {
        return getMbhdPaymentRequestFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
       *
       *

       * Collection of MBHD payment requests
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequestOrBuilder getMbhdPaymentRequestOrBuilder(
          int index) {
        if (mbhdPaymentRequestBuilder_ == null) {
          return mbhdPaymentRequest_.get(index);  } else {
          return mbhdPaymentRequestBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
       *
       *

       * Collection of MBHD payment requests
       *

       */
      public java.util.List<? extends org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequestOrBuilder>
           getMbhdPaymentRequestOrBuilderList() {
        if (mbhdPaymentRequestBuilder_ != null) {
          return mbhdPaymentRequestBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(mbhdPaymentRequest_);
        }
      }
      /**
       * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
       *
       *

       * Collection of MBHD payment requests
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest.Builder addMbhdPaymentRequestBuilder() {
        return getMbhdPaymentRequestFieldBuilder().addBuilder(
            org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest.getDefaultInstance());
      }
      /**
       * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
       *
       *

       * Collection of MBHD payment requests
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest.Builder addMbhdPaymentRequestBuilder(
          int index) {
        return getMbhdPaymentRequestFieldBuilder().addBuilder(
            index, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest.getDefaultInstance());
      }
      /**
       * repeated .MBHDPaymentRequest mbhd_payment_request = 1;
       *
       *

       * Collection of MBHD payment requests
       *

       */
      public java.util.List<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest.Builder>
           getMbhdPaymentRequestBuilderList() {
        return getMbhdPaymentRequestFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest.Builder, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequestOrBuilder>
          getMbhdPaymentRequestFieldBuilder() {
        if (mbhdPaymentRequestBuilder_ == null) {
          mbhdPaymentRequestBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequest.Builder, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.MBHDPaymentRequestOrBuilder>(
                  mbhdPaymentRequest_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          mbhdPaymentRequest_ = null;
        }
        return mbhdPaymentRequestBuilder_;
      }

      // repeated .TransactionInfo transaction_info = 2;
      private java.util.List<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo> transactionInfo_ =
        java.util.Collections.emptyList();
      private void ensureTransactionInfoIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          transactionInfo_ = new java.util.ArrayList<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo>(transactionInfo_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo.Builder, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfoOrBuilder> transactionInfoBuilder_;

      /**
       * repeated .TransactionInfo transaction_info = 2;
       *
       *

       * Collection of transactions
       *

       */
      public java.util.List<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo> getTransactionInfoList() {
        if (transactionInfoBuilder_ == null) {
          return java.util.Collections.unmodifiableList(transactionInfo_);
        } else {
          return transactionInfoBuilder_.getMessageList();
        }
      }
      /**
       * repeated .TransactionInfo transaction_info = 2;
       *
       *

       * Collection of transactions
       *

       */
      public int getTransactionInfoCount() {
        if (transactionInfoBuilder_ == null) {
          return transactionInfo_.size();
        } else {
          return transactionInfoBuilder_.getCount();
        }
      }
      /**
       * repeated .TransactionInfo transaction_info = 2;
       *
       *

       * Collection of transactions
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo getTransactionInfo(int index) {
        if (transactionInfoBuilder_ == null) {
          return transactionInfo_.get(index);
        } else {
          return transactionInfoBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .TransactionInfo transaction_info = 2;
       *
       *

       * Collection of transactions
       *

       */
      public Builder setTransactionInfo(
          int index, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo value) {
        if (transactionInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTransactionInfoIsMutable();
          transactionInfo_.set(index, value);
          onChanged();
        } else {
          transactionInfoBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .TransactionInfo transaction_info = 2;
       *
       *

       * Collection of transactions
       *

       */
      public Builder setTransactionInfo(
          int index, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo.Builder builderForValue) {
        if (transactionInfoBuilder_ == null) {
          ensureTransactionInfoIsMutable();
          transactionInfo_.set(index, builderForValue.build());
          onChanged();
        } else {
          transactionInfoBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .TransactionInfo transaction_info = 2;
       *
       *

       * Collection of transactions
       *

       */
      public Builder addTransactionInfo(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo value) {
        if (transactionInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTransactionInfoIsMutable();
          transactionInfo_.add(value);
          onChanged();
        } else {
          transactionInfoBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .TransactionInfo transaction_info = 2;
       *
       *

       * Collection of transactions
       *

       */
      public Builder addTransactionInfo(
          int index, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo value) {
        if (transactionInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTransactionInfoIsMutable();
          transactionInfo_.add(index, value);
          onChanged();
        } else {
          transactionInfoBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .TransactionInfo transaction_info = 2;
       *
       *

       * Collection of transactions
       *

       */
      public Builder addTransactionInfo(
          org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo.Builder builderForValue) {
        if (transactionInfoBuilder_ == null) {
          ensureTransactionInfoIsMutable();
          transactionInfo_.add(builderForValue.build());
          onChanged();
        } else {
          transactionInfoBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .TransactionInfo transaction_info = 2;
       *
       *

       * Collection of transactions
       *

       */
      public Builder addTransactionInfo(
          int index, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo.Builder builderForValue) {
        if (transactionInfoBuilder_ == null) {
          ensureTransactionInfoIsMutable();
          transactionInfo_.add(index, builderForValue.build());
          onChanged();
        } else {
          transactionInfoBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .TransactionInfo transaction_info = 2;
       *
       *

       * Collection of transactions
       *

       */
      public Builder addAllTransactionInfo(
          java.lang.Iterable<? extends org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo> values) {
        if (transactionInfoBuilder_ == null) {
          ensureTransactionInfoIsMutable();
          super.addAll(values, transactionInfo_);
          onChanged();
        } else {
          transactionInfoBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .TransactionInfo transaction_info = 2;
       *
       *

       * Collection of transactions
       *

       */
      public Builder clearTransactionInfo() {
        if (transactionInfoBuilder_ == null) {
          transactionInfo_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          transactionInfoBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .TransactionInfo transaction_info = 2;
       *
       *

       * Collection of transactions
       *

       */
      public Builder removeTransactionInfo(int index) {
        if (transactionInfoBuilder_ == null) {
          ensureTransactionInfoIsMutable();
          transactionInfo_.remove(index);
          onChanged();
        } else {
          transactionInfoBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .TransactionInfo transaction_info = 2;
       *
       *

       * Collection of transactions
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo.Builder getTransactionInfoBuilder(
          int index) {
        return getTransactionInfoFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .TransactionInfo transaction_info = 2;
       *
       *

       * Collection of transactions
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfoOrBuilder getTransactionInfoOrBuilder(
          int index) {
        if (transactionInfoBuilder_ == null) {
          return transactionInfo_.get(index);  } else {
          return transactionInfoBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .TransactionInfo transaction_info = 2;
       *
       *

       * Collection of transactions
       *

       */
      public java.util.List<? extends org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfoOrBuilder>
           getTransactionInfoOrBuilderList() {
        if (transactionInfoBuilder_ != null) {
          return transactionInfoBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(transactionInfo_);
        }
      }
      /**
       * repeated .TransactionInfo transaction_info = 2;
       *
       *

       * Collection of transactions
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo.Builder addTransactionInfoBuilder() {
        return getTransactionInfoFieldBuilder().addBuilder(
            org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo.getDefaultInstance());
      }
      /**
       * repeated .TransactionInfo transaction_info = 2;
       *
       *

       * Collection of transactions
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo.Builder addTransactionInfoBuilder(
          int index) {
        return getTransactionInfoFieldBuilder().addBuilder(
            index, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo.getDefaultInstance());
      }
      /**
       * repeated .TransactionInfo transaction_info = 2;
       *
       *

       * Collection of transactions
       *

       */
      public java.util.List<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo.Builder>
           getTransactionInfoBuilderList() {
        return getTransactionInfoFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo.Builder, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfoOrBuilder>
          getTransactionInfoFieldBuilder() {
        if (transactionInfoBuilder_ == null) {
          transactionInfoBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfo.Builder, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.TransactionInfoOrBuilder>(
                  transactionInfo_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          transactionInfo_ = null;
        }
        return transactionInfoBuilder_;
      }

      // repeated .PaymentRequest payment_request = 4;
      private java.util.List<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest> paymentRequest_ =
        java.util.Collections.emptyList();
      private void ensurePaymentRequestIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          paymentRequest_ = new java.util.ArrayList<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest>(paymentRequest_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest.Builder, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequestOrBuilder> paymentRequestBuilder_;

      /**
       * repeated .PaymentRequest payment_request = 4;
       *
       *

       * Collection of BIP70 payment requests
       *

       */
      public java.util.List<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest> getPaymentRequestList() {
        if (paymentRequestBuilder_ == null) {
          return java.util.Collections.unmodifiableList(paymentRequest_);
        } else {
          return paymentRequestBuilder_.getMessageList();
        }
      }
      /**
       * repeated .PaymentRequest payment_request = 4;
       *
       *

       * Collection of BIP70 payment requests
       *

       */
      public int getPaymentRequestCount() {
        if (paymentRequestBuilder_ == null) {
          return paymentRequest_.size();
        } else {
          return paymentRequestBuilder_.getCount();
        }
      }
      /**
       * repeated .PaymentRequest payment_request = 4;
       *
       *

       * Collection of BIP70 payment requests
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest getPaymentRequest(int index) {
        if (paymentRequestBuilder_ == null) {
          return paymentRequest_.get(index);
        } else {
          return paymentRequestBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .PaymentRequest payment_request = 4;
       *
       *

       * Collection of BIP70 payment requests
       *

       */
      public Builder setPaymentRequest(
          int index, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest value) {
        if (paymentRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePaymentRequestIsMutable();
          paymentRequest_.set(index, value);
          onChanged();
        } else {
          paymentRequestBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .PaymentRequest payment_request = 4;
       *
       *

       * Collection of BIP70 payment requests
       *

       */
      public Builder setPaymentRequest(
          int index, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest.Builder builderForValue) {
        if (paymentRequestBuilder_ == null) {
          ensurePaymentRequestIsMutable();
          paymentRequest_.set(index, builderForValue.build());
          onChanged();
        } else {
          paymentRequestBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .PaymentRequest payment_request = 4;
       *
       *

       * Collection of BIP70 payment requests
       *

       */
      public Builder addPaymentRequest(org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest value) {
        if (paymentRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePaymentRequestIsMutable();
          paymentRequest_.add(value);
          onChanged();
        } else {
          paymentRequestBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .PaymentRequest payment_request = 4;
       *
       *

       * Collection of BIP70 payment requests
       *

       */
      public Builder addPaymentRequest(
          int index, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest value) {
        if (paymentRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePaymentRequestIsMutable();
          paymentRequest_.add(index, value);
          onChanged();
        } else {
          paymentRequestBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .PaymentRequest payment_request = 4;
       *
       *

       * Collection of BIP70 payment requests
       *

       */
      public Builder addPaymentRequest(
          org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest.Builder builderForValue) {
        if (paymentRequestBuilder_ == null) {
          ensurePaymentRequestIsMutable();
          paymentRequest_.add(builderForValue.build());
          onChanged();
        } else {
          paymentRequestBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .PaymentRequest payment_request = 4;
       *
       *

       * Collection of BIP70 payment requests
       *

       */
      public Builder addPaymentRequest(
          int index, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest.Builder builderForValue) {
        if (paymentRequestBuilder_ == null) {
          ensurePaymentRequestIsMutable();
          paymentRequest_.add(index, builderForValue.build());
          onChanged();
        } else {
          paymentRequestBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .PaymentRequest payment_request = 4;
       *
       *

       * Collection of BIP70 payment requests
       *

       */
      public Builder addAllPaymentRequest(
          java.lang.Iterable<? extends org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest> values) {
        if (paymentRequestBuilder_ == null) {
          ensurePaymentRequestIsMutable();
          super.addAll(values, paymentRequest_);
          onChanged();
        } else {
          paymentRequestBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .PaymentRequest payment_request = 4;
       *
       *

       * Collection of BIP70 payment requests
       *

       */
      public Builder clearPaymentRequest() {
        if (paymentRequestBuilder_ == null) {
          paymentRequest_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          paymentRequestBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .PaymentRequest payment_request = 4;
       *
       *

       * Collection of BIP70 payment requests
       *

       */
      public Builder removePaymentRequest(int index) {
        if (paymentRequestBuilder_ == null) {
          ensurePaymentRequestIsMutable();
          paymentRequest_.remove(index);
          onChanged();
        } else {
          paymentRequestBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .PaymentRequest payment_request = 4;
       *
       *

       * Collection of BIP70 payment requests
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest.Builder getPaymentRequestBuilder(
          int index) {
        return getPaymentRequestFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .PaymentRequest payment_request = 4;
       *
       *

       * Collection of BIP70 payment requests
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequestOrBuilder getPaymentRequestOrBuilder(
          int index) {
        if (paymentRequestBuilder_ == null) {
          return paymentRequest_.get(index);  } else {
          return paymentRequestBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .PaymentRequest payment_request = 4;
       *
       *

       * Collection of BIP70 payment requests
       *

       */
      public java.util.List<? extends org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequestOrBuilder>
           getPaymentRequestOrBuilderList() {
        if (paymentRequestBuilder_ != null) {
          return paymentRequestBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(paymentRequest_);
        }
      }
      /**
       * repeated .PaymentRequest payment_request = 4;
       *
       *

       * Collection of BIP70 payment requests
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest.Builder addPaymentRequestBuilder() {
        return getPaymentRequestFieldBuilder().addBuilder(
            org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest.getDefaultInstance());
      }
      /**
       * repeated .PaymentRequest payment_request = 4;
       *
       *

       * Collection of BIP70 payment requests
       *

       */
      public org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest.Builder addPaymentRequestBuilder(
          int index) {
        return getPaymentRequestFieldBuilder().addBuilder(
            index, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest.getDefaultInstance());
      }
      /**
       * repeated .PaymentRequest payment_request = 4;
       *
       *

       * Collection of BIP70 payment requests
       *

       */
      public java.util.List<org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest.Builder>
           getPaymentRequestBuilderList() {
        return getPaymentRequestFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest.Builder, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequestOrBuilder>
          getPaymentRequestFieldBuilder() {
        if (paymentRequestBuilder_ == null) {
          paymentRequestBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequest.Builder, org.multibit.hd.core.protobuf.MBHDPaymentsProtos.PaymentRequestOrBuilder>(
                  paymentRequest_,
                  ((bitField0_ & 0x00000004) == 0x00000004),
                  getParentForChildren(),
                  isClean());
          paymentRequest_ = null;
        }
        return paymentRequestBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:Payments)
    }

    static {
      defaultInstance = new Payments(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:Payments)
  }

  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_FiatPayment_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_FiatPayment_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_MBHDPaymentRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_MBHDPaymentRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_TransactionInfo_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_TransactionInfo_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_PaymentRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_PaymentRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_Payments_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_Payments_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\034main/protobuf/payments.proto\"O\n\013FiatPa" +
      "yment\022\016\n\006amount\030\001 \002(\t\022\020\n\010currency\030\002 \002(\t\022" +
      "\020\n\010exchange\030\003 \001(\t\022\014\n\004rate\030\004 \001(\t\"\231\001\n\022MBHD" +
      "PaymentRequest\022\017\n\007address\030\001 \002(\t\022\r\n\005label" +
      "\030\002 \001(\t\022\021\n\tamountBTC\030\003 \001(\003\022!\n\013amount_fiat" +
      "\030\004 \001(\0132\014.FiatPayment\022\014\n\004note\030\005 \001(\t\022\014\n\004da" +
      "te\030\006 \001(\003\022\021\n\tisGlidera\030\007 \001(\010\"\224\001\n\017Transact" +
      "ionInfo\022\014\n\004hash\030\001 \002(\t\022!\n\013amount_fiat\030\003 \001" +
      "(\0132\014.FiatPayment\022\014\n\004note\030\004 \001(\t\022\021\n\tminer_" +
      "fee\030\005 \001(\003\022\022\n\nclient_fee\030\006 \001(\003\022\033\n\014sent_by",
      "_self\030\007 \001(\010:\005false\"\351\001\n\016PaymentRequest\022\014\n" +
      "\004uuid\030\001 \002(\t\022\014\n\004hash\030\002 \001(\t\022!\n\013amount_fiat" +
      "\030\003 \001(\0132\014.FiatPayment\022\021\n\tamountBTC\030\004 \001(\003\022" +
      "\014\n\004note\030\005 \001(\t\022\014\n\004date\030\006 \001(\003\022\035\n\025identity_" +
      "display_name\030\007 \001(\t\022\024\n\014trust_status\030\010 \001(\t" +
      "\022\033\n\023trust_error_message\030\t \001(\t\022\027\n\017expirat" +
      "ion_date\030\n \001(\003\"\223\001\n\010Payments\0221\n\024mbhd_paym" +
      "ent_request\030\001 \003(\0132\023.MBHDPaymentRequest\022*" +
      "\n\020transaction_info\030\002 \003(\0132\020.TransactionIn" +
      "fo\022(\n\017payment_request\030\004 \003(\0132\017.PaymentReq",
      "uestB3\n\035org.multibit.hd.core.protobufB\022M" +
      "BHDPaymentsProtos"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
        public com.google.protobuf.ExtensionRegistry assignDescriptors(
            com.google.protobuf.Descriptors.FileDescriptor root) {
          descriptor = root;
          internal_static_FiatPayment_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_FiatPayment_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_FiatPayment_descriptor,
              new java.lang.String[] { "Amount", "Currency", "Exchange", "Rate", });
          internal_static_MBHDPaymentRequest_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_MBHDPaymentRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_MBHDPaymentRequest_descriptor,
              new java.lang.String[] { "Address", "Label", "AmountBTC", "AmountFiat", "Note", "Date", "IsGlidera", });
          internal_static_TransactionInfo_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_TransactionInfo_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_TransactionInfo_descriptor,
              new java.lang.String[] { "Hash", "AmountFiat", "Note", "MinerFee", "ClientFee", "SentBySelf", });
          internal_static_PaymentRequest_descriptor =
            getDescriptor().getMessageTypes().get(3);
          internal_static_PaymentRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_PaymentRequest_descriptor,
              new java.lang.String[] { "Uuid", "Hash", "AmountFiat", "AmountBTC", "Note", "Date", "IdentityDisplayName", "TrustStatus", "TrustErrorMessage", "ExpirationDate", });
          internal_static_Payments_descriptor =
            getDescriptor().getMessageTypes().get(4);
          internal_static_Payments_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_Payments_descriptor,
              new java.lang.String[] { "MbhdPaymentRequest", "TransactionInfo", "PaymentRequest", });
          return null;
        }
      };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
  }

  // @@protoc_insertion_point(outer_class_scope)
}