// Generated by the Scala Plugin for the Protocol Buffer Compiler.
// Do not edit!
//
// Protofile syntax: PROTO3

package code.obp.grpc.api

@SerialVersionUID(0L)
final case class CoreTransactionsJsonV300Grpc(
    transactions: _root_.scala.collection.Seq[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc] = _root_.scala.collection.Seq.empty
    ) extends scalapb.GeneratedMessage with scalapb.Message[CoreTransactionsJsonV300Grpc] with scalapb.lenses.Updatable[CoreTransactionsJsonV300Grpc] {
    @transient
    private[this] var __serializedSizeCachedValue: _root_.scala.Int = 0
    private[this] def __computeSerializedValue(): _root_.scala.Int = {
      var __size = 0
      transactions.foreach(transactions => __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(transactions.serializedSize) + transactions.serializedSize)
      __size
    }
    final override def serializedSize: _root_.scala.Int = {
      var read = __serializedSizeCachedValue
      if (read == 0) {
        read = __computeSerializedValue()
        __serializedSizeCachedValue = read
      }
      read
    }
    def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
      transactions.foreach { __v =>
        _output__.writeTag(1, 2)
        _output__.writeUInt32NoTag(__v.serializedSize)
        __v.writeTo(_output__)
      };
    }
    def mergeFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): code.obp.grpc.api.CoreTransactionsJsonV300Grpc = {
      val __transactions = (_root_.scala.collection.immutable.Vector.newBuilder[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc] ++= this.transactions)
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __transactions += _root_.scalapb.LiteParser.readMessage(_input__, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc.defaultInstance)
          case tag => _input__.skipField(tag)
        }
      }
      code.obp.grpc.api.CoreTransactionsJsonV300Grpc(
          transactions = __transactions.result()
      )
    }
    def clearTransactions = copy(transactions = _root_.scala.collection.Seq.empty)
    def addTransactions(__vs: code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc*): CoreTransactionsJsonV300Grpc = addAllTransactions(__vs)
    def addAllTransactions(__vs: TraversableOnce[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc]): CoreTransactionsJsonV300Grpc = copy(transactions = transactions ++ __vs)
    def withTransactions(__v: _root_.scala.collection.Seq[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc]): CoreTransactionsJsonV300Grpc = copy(transactions = __v)
    def getFieldByNumber(__fieldNumber: _root_.scala.Int): scala.Any = {
      (__fieldNumber: @_root_.scala.unchecked) match {
        case 1 => transactions
      }
    }
    def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
      require(__field.containingMessage eq companion.scalaDescriptor)
      (__field.number: @_root_.scala.unchecked) match {
        case 1 => _root_.scalapb.descriptors.PRepeated(transactions.map(_.toPMessage)(_root_.scala.collection.breakOut))
      }
    }
    def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
    def companion = code.obp.grpc.api.CoreTransactionsJsonV300Grpc
}

object CoreTransactionsJsonV300Grpc extends scalapb.GeneratedMessageCompanion[code.obp.grpc.api.CoreTransactionsJsonV300Grpc] {
  implicit def messageCompanion: scalapb.GeneratedMessageCompanion[code.obp.grpc.api.CoreTransactionsJsonV300Grpc] = this
  def fromFieldsMap(__fieldsMap: scala.collection.immutable.Map[_root_.com.google.protobuf.Descriptors.FieldDescriptor, scala.Any]): code.obp.grpc.api.CoreTransactionsJsonV300Grpc = {
    require(__fieldsMap.keys.forall(_.getContainingType() == javaDescriptor), "FieldDescriptor does not match message type.")
    val __fields = javaDescriptor.getFields
    code.obp.grpc.api.CoreTransactionsJsonV300Grpc(
      __fieldsMap.getOrElse(__fields.get(0), Nil).asInstanceOf[_root_.scala.collection.Seq[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc]]
    )
  }
  implicit def messageReads: _root_.scalapb.descriptors.Reads[code.obp.grpc.api.CoreTransactionsJsonV300Grpc] = _root_.scalapb.descriptors.Reads{
    case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
      require(__fieldsMap.keys.forall(_.containingMessage == scalaDescriptor), "FieldDescriptor does not match message type.")
      code.obp.grpc.api.CoreTransactionsJsonV300Grpc(
        __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.collection.Seq[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc]]).getOrElse(_root_.scala.collection.Seq.empty)
      )
    case _ => throw new RuntimeException("Expected PMessage")
  }
  def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = ApiProto.javaDescriptor.getMessageTypes.get(10)
  def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = ApiProto.scalaDescriptor.messages(10)
  def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
    var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
    (__number: @_root_.scala.unchecked) match {
      case 1 => __out = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc
    }
    __out
  }
  lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_]] = Seq[_root_.scalapb.GeneratedMessageCompanion[_]](
    _root_.code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc,
    _root_.code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc,
    _root_.code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc,
    _root_.code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc,
    _root_.code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc,
    _root_.code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc,
    _root_.code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc,
    _root_.code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc
  )
  def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
  lazy val defaultInstance = code.obp.grpc.api.CoreTransactionsJsonV300Grpc(
  )
  @SerialVersionUID(0L)
  final case class CoreTransactionJsonV300Grpc(
      id: _root_.scala.Predef.String = "",
      thisAccount: scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc] = None,
      otherAccount: scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc] = None,
      details: scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc] = None
      ) extends scalapb.GeneratedMessage with scalapb.Message[CoreTransactionJsonV300Grpc] with scalapb.lenses.Updatable[CoreTransactionJsonV300Grpc] {
      @transient
      private[this] var __serializedSizeCachedValue: _root_.scala.Int = 0
      private[this] def __computeSerializedValue(): _root_.scala.Int = {
        var __size = 0
        if (id != "") { __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(1, id) }
        if (thisAccount.isDefined) { __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(thisAccount.get.serializedSize) + thisAccount.get.serializedSize }
        if (otherAccount.isDefined) { __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(otherAccount.get.serializedSize) + otherAccount.get.serializedSize }
        if (details.isDefined) { __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(details.get.serializedSize) + details.get.serializedSize }
        __size
      }
      final override def serializedSize: _root_.scala.Int = {
        var read = __serializedSizeCachedValue
        if (read == 0) {
          read = __computeSerializedValue()
          __serializedSizeCachedValue = read
        }
        read
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        {
          val __v = id
          if (__v != "") {
            _output__.writeString(1, __v)
          }
        };
        thisAccount.foreach { __v =>
          _output__.writeTag(2, 2)
          _output__.writeUInt32NoTag(__v.serializedSize)
          __v.writeTo(_output__)
        };
        otherAccount.foreach { __v =>
          _output__.writeTag(3, 2)
          _output__.writeUInt32NoTag(__v.serializedSize)
          __v.writeTo(_output__)
        };
        details.foreach { __v =>
          _output__.writeTag(4, 2)
          _output__.writeUInt32NoTag(__v.serializedSize)
          __v.writeTo(_output__)
        };
      }
      def mergeFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc = {
        var __id = this.id
        var __thisAccount = this.thisAccount
        var __otherAccount = this.otherAccount
        var __details = this.details
        var _done__ = false
        while (!_done__) {
          val _tag__ = _input__.readTag()
          _tag__ match {
            case 0 => _done__ = true
            case 10 =>
              __id = _input__.readString()
            case 18 =>
              __thisAccount = Option(_root_.scalapb.LiteParser.readMessage(_input__, __thisAccount.getOrElse(code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc.defaultInstance)))
            case 26 =>
              __otherAccount = Option(_root_.scalapb.LiteParser.readMessage(_input__, __otherAccount.getOrElse(code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc.defaultInstance)))
            case 34 =>
              __details = Option(_root_.scalapb.LiteParser.readMessage(_input__, __details.getOrElse(code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc.defaultInstance)))
            case tag => _input__.skipField(tag)
          }
        }
        code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc(
            id = __id,
            thisAccount = __thisAccount,
            otherAccount = __otherAccount,
            details = __details
        )
      }
      def withId(__v: _root_.scala.Predef.String): CoreTransactionJsonV300Grpc = copy(id = __v)
      def getThisAccount: code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc = thisAccount.getOrElse(code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc.defaultInstance)
      def clearThisAccount: CoreTransactionJsonV300Grpc = copy(thisAccount = None)
      def withThisAccount(__v: code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc): CoreTransactionJsonV300Grpc = copy(thisAccount = Option(__v))
      def getOtherAccount: code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc = otherAccount.getOrElse(code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc.defaultInstance)
      def clearOtherAccount: CoreTransactionJsonV300Grpc = copy(otherAccount = None)
      def withOtherAccount(__v: code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc): CoreTransactionJsonV300Grpc = copy(otherAccount = Option(__v))
      def getDetails: code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc = details.getOrElse(code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc.defaultInstance)
      def clearDetails: CoreTransactionJsonV300Grpc = copy(details = None)
      def withDetails(__v: code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc): CoreTransactionJsonV300Grpc = copy(details = Option(__v))
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => {
            val __t = id
            if (__t != "") __t else null
          }
          case 2 => thisAccount.orNull
          case 3 => otherAccount.orNull
          case 4 => details.orNull
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PString(id)
          case 2 => thisAccount.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
          case 3 => otherAccount.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
          case 4 => details.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc
  }
  
  object CoreTransactionJsonV300Grpc extends scalapb.GeneratedMessageCompanion[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc] = this
    def fromFieldsMap(__fieldsMap: scala.collection.immutable.Map[_root_.com.google.protobuf.Descriptors.FieldDescriptor, scala.Any]): code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc = {
      require(__fieldsMap.keys.forall(_.getContainingType() == javaDescriptor), "FieldDescriptor does not match message type.")
      val __fields = javaDescriptor.getFields
      code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc(
        __fieldsMap.getOrElse(__fields.get(0), "").asInstanceOf[_root_.scala.Predef.String],
        __fieldsMap.get(__fields.get(1)).asInstanceOf[scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc]],
        __fieldsMap.get(__fields.get(2)).asInstanceOf[scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc]],
        __fieldsMap.get(__fields.get(3)).asInstanceOf[scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc]]
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        require(__fieldsMap.keys.forall(_.containingMessage == scalaDescriptor), "FieldDescriptor does not match message type.")
        code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc(
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).flatMap(_.as[scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc]]),
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(3).get).flatMap(_.as[scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc]]),
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(4).get).flatMap(_.as[scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc]])
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.javaDescriptor.getNestedTypes.get(0)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.scalaDescriptor.nestedMessages(0)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 2 => __out = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc
        case 3 => __out = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc
        case 4 => __out = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc(
    )
    implicit class CoreTransactionJsonV300GrpcLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc](_l) {
      def id: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.id)((c_, f_) => c_.copy(id = f_))
      def thisAccount: _root_.scalapb.lenses.Lens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc] = field(_.getThisAccount)((c_, f_) => c_.copy(thisAccount = Option(f_)))
      def optionalThisAccount: _root_.scalapb.lenses.Lens[UpperPB, scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc]] = field(_.thisAccount)((c_, f_) => c_.copy(thisAccount = f_))
      def otherAccount: _root_.scalapb.lenses.Lens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc] = field(_.getOtherAccount)((c_, f_) => c_.copy(otherAccount = Option(f_)))
      def optionalOtherAccount: _root_.scalapb.lenses.Lens[UpperPB, scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc]] = field(_.otherAccount)((c_, f_) => c_.copy(otherAccount = f_))
      def details: _root_.scalapb.lenses.Lens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc] = field(_.getDetails)((c_, f_) => c_.copy(details = Option(f_)))
      def optionalDetails: _root_.scalapb.lenses.Lens[UpperPB, scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc]] = field(_.details)((c_, f_) => c_.copy(details = f_))
    }
    final val ID_FIELD_NUMBER = 1
    final val THIS_ACCOUNT_FIELD_NUMBER = 2
    final val OTHER_ACCOUNT_FIELD_NUMBER = 3
    final val DETAILS_FIELD_NUMBER = 4
  }
  
  @SerialVersionUID(0L)
  final case class AccountHolderJSONGrpc(
      name: _root_.scala.Predef.String = "",
      isAlias: _root_.scala.Boolean = false
      ) extends scalapb.GeneratedMessage with scalapb.Message[AccountHolderJSONGrpc] with scalapb.lenses.Updatable[AccountHolderJSONGrpc] {
      @transient
      private[this] var __serializedSizeCachedValue: _root_.scala.Int = 0
      private[this] def __computeSerializedValue(): _root_.scala.Int = {
        var __size = 0
        if (name != "") { __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(1, name) }
        if (isAlias != false) { __size += _root_.com.google.protobuf.CodedOutputStream.computeBoolSize(2, isAlias) }
        __size
      }
      final override def serializedSize: _root_.scala.Int = {
        var read = __serializedSizeCachedValue
        if (read == 0) {
          read = __computeSerializedValue()
          __serializedSizeCachedValue = read
        }
        read
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        {
          val __v = name
          if (__v != "") {
            _output__.writeString(1, __v)
          }
        };
        {
          val __v = isAlias
          if (__v != false) {
            _output__.writeBool(2, __v)
          }
        };
      }
      def mergeFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc = {
        var __name = this.name
        var __isAlias = this.isAlias
        var _done__ = false
        while (!_done__) {
          val _tag__ = _input__.readTag()
          _tag__ match {
            case 0 => _done__ = true
            case 10 =>
              __name = _input__.readString()
            case 16 =>
              __isAlias = _input__.readBool()
            case tag => _input__.skipField(tag)
          }
        }
        code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc(
            name = __name,
            isAlias = __isAlias
        )
      }
      def withName(__v: _root_.scala.Predef.String): AccountHolderJSONGrpc = copy(name = __v)
      def withIsAlias(__v: _root_.scala.Boolean): AccountHolderJSONGrpc = copy(isAlias = __v)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => {
            val __t = name
            if (__t != "") __t else null
          }
          case 2 => {
            val __t = isAlias
            if (__t != false) __t else null
          }
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PString(name)
          case 2 => _root_.scalapb.descriptors.PBoolean(isAlias)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc
  }
  
  object AccountHolderJSONGrpc extends scalapb.GeneratedMessageCompanion[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc] = this
    def fromFieldsMap(__fieldsMap: scala.collection.immutable.Map[_root_.com.google.protobuf.Descriptors.FieldDescriptor, scala.Any]): code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc = {
      require(__fieldsMap.keys.forall(_.getContainingType() == javaDescriptor), "FieldDescriptor does not match message type.")
      val __fields = javaDescriptor.getFields
      code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc(
        __fieldsMap.getOrElse(__fields.get(0), "").asInstanceOf[_root_.scala.Predef.String],
        __fieldsMap.getOrElse(__fields.get(1), false).asInstanceOf[_root_.scala.Boolean]
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        require(__fieldsMap.keys.forall(_.containingMessage == scalaDescriptor), "FieldDescriptor does not match message type.")
        code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc(
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).map(_.as[_root_.scala.Boolean]).getOrElse(false)
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.javaDescriptor.getNestedTypes.get(1)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.scalaDescriptor.nestedMessages(1)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = throw new MatchError(__number)
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc(
    )
    implicit class AccountHolderJSONGrpcLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc](_l) {
      def name: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.name)((c_, f_) => c_.copy(name = f_))
      def isAlias: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Boolean] = field(_.isAlias)((c_, f_) => c_.copy(isAlias = f_))
    }
    final val NAME_FIELD_NUMBER = 1
    final val IS_ALIAS_FIELD_NUMBER = 2
  }
  
  @SerialVersionUID(0L)
  final case class AccountRoutingJsonV121Grpc(
      scheme: _root_.scala.Predef.String = "",
      address: _root_.scala.Predef.String = ""
      ) extends scalapb.GeneratedMessage with scalapb.Message[AccountRoutingJsonV121Grpc] with scalapb.lenses.Updatable[AccountRoutingJsonV121Grpc] {
      @transient
      private[this] var __serializedSizeCachedValue: _root_.scala.Int = 0
      private[this] def __computeSerializedValue(): _root_.scala.Int = {
        var __size = 0
        if (scheme != "") { __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(1, scheme) }
        if (address != "") { __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(2, address) }
        __size
      }
      final override def serializedSize: _root_.scala.Int = {
        var read = __serializedSizeCachedValue
        if (read == 0) {
          read = __computeSerializedValue()
          __serializedSizeCachedValue = read
        }
        read
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        {
          val __v = scheme
          if (__v != "") {
            _output__.writeString(1, __v)
          }
        };
        {
          val __v = address
          if (__v != "") {
            _output__.writeString(2, __v)
          }
        };
      }
      def mergeFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc = {
        var __scheme = this.scheme
        var __address = this.address
        var _done__ = false
        while (!_done__) {
          val _tag__ = _input__.readTag()
          _tag__ match {
            case 0 => _done__ = true
            case 10 =>
              __scheme = _input__.readString()
            case 18 =>
              __address = _input__.readString()
            case tag => _input__.skipField(tag)
          }
        }
        code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc(
            scheme = __scheme,
            address = __address
        )
      }
      def withScheme(__v: _root_.scala.Predef.String): AccountRoutingJsonV121Grpc = copy(scheme = __v)
      def withAddress(__v: _root_.scala.Predef.String): AccountRoutingJsonV121Grpc = copy(address = __v)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => {
            val __t = scheme
            if (__t != "") __t else null
          }
          case 2 => {
            val __t = address
            if (__t != "") __t else null
          }
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PString(scheme)
          case 2 => _root_.scalapb.descriptors.PString(address)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc
  }
  
  object AccountRoutingJsonV121Grpc extends scalapb.GeneratedMessageCompanion[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc] = this
    def fromFieldsMap(__fieldsMap: scala.collection.immutable.Map[_root_.com.google.protobuf.Descriptors.FieldDescriptor, scala.Any]): code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc = {
      require(__fieldsMap.keys.forall(_.getContainingType() == javaDescriptor), "FieldDescriptor does not match message type.")
      val __fields = javaDescriptor.getFields
      code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc(
        __fieldsMap.getOrElse(__fields.get(0), "").asInstanceOf[_root_.scala.Predef.String],
        __fieldsMap.getOrElse(__fields.get(1), "").asInstanceOf[_root_.scala.Predef.String]
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        require(__fieldsMap.keys.forall(_.containingMessage == scalaDescriptor), "FieldDescriptor does not match message type.")
        code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc(
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).map(_.as[_root_.scala.Predef.String]).getOrElse("")
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.javaDescriptor.getNestedTypes.get(2)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.scalaDescriptor.nestedMessages(2)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = throw new MatchError(__number)
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc(
    )
    implicit class AccountRoutingJsonV121GrpcLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc](_l) {
      def scheme: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.scheme)((c_, f_) => c_.copy(scheme = f_))
      def address: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.address)((c_, f_) => c_.copy(address = f_))
    }
    final val SCHEME_FIELD_NUMBER = 1
    final val ADDRESS_FIELD_NUMBER = 2
  }
  
  @SerialVersionUID(0L)
  final case class BankRoutingJsonV121Grpc(
      scheme: _root_.scala.Predef.String = "",
      address: _root_.scala.Predef.String = ""
      ) extends scalapb.GeneratedMessage with scalapb.Message[BankRoutingJsonV121Grpc] with scalapb.lenses.Updatable[BankRoutingJsonV121Grpc] {
      @transient
      private[this] var __serializedSizeCachedValue: _root_.scala.Int = 0
      private[this] def __computeSerializedValue(): _root_.scala.Int = {
        var __size = 0
        if (scheme != "") { __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(1, scheme) }
        if (address != "") { __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(2, address) }
        __size
      }
      final override def serializedSize: _root_.scala.Int = {
        var read = __serializedSizeCachedValue
        if (read == 0) {
          read = __computeSerializedValue()
          __serializedSizeCachedValue = read
        }
        read
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        {
          val __v = scheme
          if (__v != "") {
            _output__.writeString(1, __v)
          }
        };
        {
          val __v = address
          if (__v != "") {
            _output__.writeString(2, __v)
          }
        };
      }
      def mergeFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc = {
        var __scheme = this.scheme
        var __address = this.address
        var _done__ = false
        while (!_done__) {
          val _tag__ = _input__.readTag()
          _tag__ match {
            case 0 => _done__ = true
            case 10 =>
              __scheme = _input__.readString()
            case 18 =>
              __address = _input__.readString()
            case tag => _input__.skipField(tag)
          }
        }
        code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc(
            scheme = __scheme,
            address = __address
        )
      }
      def withScheme(__v: _root_.scala.Predef.String): BankRoutingJsonV121Grpc = copy(scheme = __v)
      def withAddress(__v: _root_.scala.Predef.String): BankRoutingJsonV121Grpc = copy(address = __v)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => {
            val __t = scheme
            if (__t != "") __t else null
          }
          case 2 => {
            val __t = address
            if (__t != "") __t else null
          }
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PString(scheme)
          case 2 => _root_.scalapb.descriptors.PString(address)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc
  }
  
  object BankRoutingJsonV121Grpc extends scalapb.GeneratedMessageCompanion[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc] = this
    def fromFieldsMap(__fieldsMap: scala.collection.immutable.Map[_root_.com.google.protobuf.Descriptors.FieldDescriptor, scala.Any]): code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc = {
      require(__fieldsMap.keys.forall(_.getContainingType() == javaDescriptor), "FieldDescriptor does not match message type.")
      val __fields = javaDescriptor.getFields
      code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc(
        __fieldsMap.getOrElse(__fields.get(0), "").asInstanceOf[_root_.scala.Predef.String],
        __fieldsMap.getOrElse(__fields.get(1), "").asInstanceOf[_root_.scala.Predef.String]
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        require(__fieldsMap.keys.forall(_.containingMessage == scalaDescriptor), "FieldDescriptor does not match message type.")
        code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc(
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).map(_.as[_root_.scala.Predef.String]).getOrElse("")
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.javaDescriptor.getNestedTypes.get(3)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.scalaDescriptor.nestedMessages(3)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = throw new MatchError(__number)
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc(
    )
    implicit class BankRoutingJsonV121GrpcLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc](_l) {
      def scheme: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.scheme)((c_, f_) => c_.copy(scheme = f_))
      def address: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.address)((c_, f_) => c_.copy(address = f_))
    }
    final val SCHEME_FIELD_NUMBER = 1
    final val ADDRESS_FIELD_NUMBER = 2
  }
  
  @SerialVersionUID(0L)
  final case class ThisAccountJsonV300Grpc(
      id: _root_.scala.Predef.String = "",
      bankRouting: scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc] = None,
      accountRoutings: _root_.scala.collection.Seq[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc] = _root_.scala.collection.Seq.empty,
      holders: _root_.scala.collection.Seq[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc] = _root_.scala.collection.Seq.empty
      ) extends scalapb.GeneratedMessage with scalapb.Message[ThisAccountJsonV300Grpc] with scalapb.lenses.Updatable[ThisAccountJsonV300Grpc] {
      @transient
      private[this] var __serializedSizeCachedValue: _root_.scala.Int = 0
      private[this] def __computeSerializedValue(): _root_.scala.Int = {
        var __size = 0
        if (id != "") { __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(1, id) }
        if (bankRouting.isDefined) { __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(bankRouting.get.serializedSize) + bankRouting.get.serializedSize }
        accountRoutings.foreach(accountRoutings => __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(accountRoutings.serializedSize) + accountRoutings.serializedSize)
        holders.foreach(holders => __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(holders.serializedSize) + holders.serializedSize)
        __size
      }
      final override def serializedSize: _root_.scala.Int = {
        var read = __serializedSizeCachedValue
        if (read == 0) {
          read = __computeSerializedValue()
          __serializedSizeCachedValue = read
        }
        read
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        {
          val __v = id
          if (__v != "") {
            _output__.writeString(1, __v)
          }
        };
        bankRouting.foreach { __v =>
          _output__.writeTag(2, 2)
          _output__.writeUInt32NoTag(__v.serializedSize)
          __v.writeTo(_output__)
        };
        accountRoutings.foreach { __v =>
          _output__.writeTag(3, 2)
          _output__.writeUInt32NoTag(__v.serializedSize)
          __v.writeTo(_output__)
        };
        holders.foreach { __v =>
          _output__.writeTag(4, 2)
          _output__.writeUInt32NoTag(__v.serializedSize)
          __v.writeTo(_output__)
        };
      }
      def mergeFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc = {
        var __id = this.id
        var __bankRouting = this.bankRouting
        val __accountRoutings = (_root_.scala.collection.immutable.Vector.newBuilder[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc] ++= this.accountRoutings)
        val __holders = (_root_.scala.collection.immutable.Vector.newBuilder[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc] ++= this.holders)
        var _done__ = false
        while (!_done__) {
          val _tag__ = _input__.readTag()
          _tag__ match {
            case 0 => _done__ = true
            case 10 =>
              __id = _input__.readString()
            case 18 =>
              __bankRouting = Option(_root_.scalapb.LiteParser.readMessage(_input__, __bankRouting.getOrElse(code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc.defaultInstance)))
            case 26 =>
              __accountRoutings += _root_.scalapb.LiteParser.readMessage(_input__, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc.defaultInstance)
            case 34 =>
              __holders += _root_.scalapb.LiteParser.readMessage(_input__, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc.defaultInstance)
            case tag => _input__.skipField(tag)
          }
        }
        code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc(
            id = __id,
            bankRouting = __bankRouting,
            accountRoutings = __accountRoutings.result(),
            holders = __holders.result()
        )
      }
      def withId(__v: _root_.scala.Predef.String): ThisAccountJsonV300Grpc = copy(id = __v)
      def getBankRouting: code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc = bankRouting.getOrElse(code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc.defaultInstance)
      def clearBankRouting: ThisAccountJsonV300Grpc = copy(bankRouting = None)
      def withBankRouting(__v: code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc): ThisAccountJsonV300Grpc = copy(bankRouting = Option(__v))
      def clearAccountRoutings = copy(accountRoutings = _root_.scala.collection.Seq.empty)
      def addAccountRoutings(__vs: code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc*): ThisAccountJsonV300Grpc = addAllAccountRoutings(__vs)
      def addAllAccountRoutings(__vs: TraversableOnce[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc]): ThisAccountJsonV300Grpc = copy(accountRoutings = accountRoutings ++ __vs)
      def withAccountRoutings(__v: _root_.scala.collection.Seq[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc]): ThisAccountJsonV300Grpc = copy(accountRoutings = __v)
      def clearHolders = copy(holders = _root_.scala.collection.Seq.empty)
      def addHolders(__vs: code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc*): ThisAccountJsonV300Grpc = addAllHolders(__vs)
      def addAllHolders(__vs: TraversableOnce[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc]): ThisAccountJsonV300Grpc = copy(holders = holders ++ __vs)
      def withHolders(__v: _root_.scala.collection.Seq[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc]): ThisAccountJsonV300Grpc = copy(holders = __v)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => {
            val __t = id
            if (__t != "") __t else null
          }
          case 2 => bankRouting.orNull
          case 3 => accountRoutings
          case 4 => holders
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PString(id)
          case 2 => bankRouting.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
          case 3 => _root_.scalapb.descriptors.PRepeated(accountRoutings.map(_.toPMessage)(_root_.scala.collection.breakOut))
          case 4 => _root_.scalapb.descriptors.PRepeated(holders.map(_.toPMessage)(_root_.scala.collection.breakOut))
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc
  }
  
  object ThisAccountJsonV300Grpc extends scalapb.GeneratedMessageCompanion[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc] = this
    def fromFieldsMap(__fieldsMap: scala.collection.immutable.Map[_root_.com.google.protobuf.Descriptors.FieldDescriptor, scala.Any]): code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc = {
      require(__fieldsMap.keys.forall(_.getContainingType() == javaDescriptor), "FieldDescriptor does not match message type.")
      val __fields = javaDescriptor.getFields
      code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc(
        __fieldsMap.getOrElse(__fields.get(0), "").asInstanceOf[_root_.scala.Predef.String],
        __fieldsMap.get(__fields.get(1)).asInstanceOf[scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc]],
        __fieldsMap.getOrElse(__fields.get(2), Nil).asInstanceOf[_root_.scala.collection.Seq[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc]],
        __fieldsMap.getOrElse(__fields.get(3), Nil).asInstanceOf[_root_.scala.collection.Seq[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc]]
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        require(__fieldsMap.keys.forall(_.containingMessage == scalaDescriptor), "FieldDescriptor does not match message type.")
        code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc(
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).flatMap(_.as[scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc]]),
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(3).get).map(_.as[_root_.scala.collection.Seq[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc]]).getOrElse(_root_.scala.collection.Seq.empty),
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(4).get).map(_.as[_root_.scala.collection.Seq[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc]]).getOrElse(_root_.scala.collection.Seq.empty)
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.javaDescriptor.getNestedTypes.get(4)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.scalaDescriptor.nestedMessages(4)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 2 => __out = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc
        case 3 => __out = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc
        case 4 => __out = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc(
    )
    implicit class ThisAccountJsonV300GrpcLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.ThisAccountJsonV300Grpc](_l) {
      def id: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.id)((c_, f_) => c_.copy(id = f_))
      def bankRouting: _root_.scalapb.lenses.Lens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc] = field(_.getBankRouting)((c_, f_) => c_.copy(bankRouting = Option(f_)))
      def optionalBankRouting: _root_.scalapb.lenses.Lens[UpperPB, scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc]] = field(_.bankRouting)((c_, f_) => c_.copy(bankRouting = f_))
      def accountRoutings: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.collection.Seq[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc]] = field(_.accountRoutings)((c_, f_) => c_.copy(accountRoutings = f_))
      def holders: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.collection.Seq[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc]] = field(_.holders)((c_, f_) => c_.copy(holders = f_))
    }
    final val ID_FIELD_NUMBER = 1
    final val BANK_ROUTING_FIELD_NUMBER = 2
    final val ACCOUNT_ROUTINGS_FIELD_NUMBER = 3
    final val HOLDERS_FIELD_NUMBER = 4
  }
  
  @SerialVersionUID(0L)
  final case class CoreCounterpartyJsonV300Grpc(
      id: _root_.scala.Predef.String = "",
      holder: scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc] = None,
      bankRouting: scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc] = None,
      accountRoutings: _root_.scala.collection.Seq[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc] = _root_.scala.collection.Seq.empty
      ) extends scalapb.GeneratedMessage with scalapb.Message[CoreCounterpartyJsonV300Grpc] with scalapb.lenses.Updatable[CoreCounterpartyJsonV300Grpc] {
      @transient
      private[this] var __serializedSizeCachedValue: _root_.scala.Int = 0
      private[this] def __computeSerializedValue(): _root_.scala.Int = {
        var __size = 0
        if (id != "") { __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(1, id) }
        if (holder.isDefined) { __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(holder.get.serializedSize) + holder.get.serializedSize }
        if (bankRouting.isDefined) { __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(bankRouting.get.serializedSize) + bankRouting.get.serializedSize }
        accountRoutings.foreach(accountRoutings => __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(accountRoutings.serializedSize) + accountRoutings.serializedSize)
        __size
      }
      final override def serializedSize: _root_.scala.Int = {
        var read = __serializedSizeCachedValue
        if (read == 0) {
          read = __computeSerializedValue()
          __serializedSizeCachedValue = read
        }
        read
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        {
          val __v = id
          if (__v != "") {
            _output__.writeString(1, __v)
          }
        };
        holder.foreach { __v =>
          _output__.writeTag(2, 2)
          _output__.writeUInt32NoTag(__v.serializedSize)
          __v.writeTo(_output__)
        };
        bankRouting.foreach { __v =>
          _output__.writeTag(3, 2)
          _output__.writeUInt32NoTag(__v.serializedSize)
          __v.writeTo(_output__)
        };
        accountRoutings.foreach { __v =>
          _output__.writeTag(4, 2)
          _output__.writeUInt32NoTag(__v.serializedSize)
          __v.writeTo(_output__)
        };
      }
      def mergeFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc = {
        var __id = this.id
        var __holder = this.holder
        var __bankRouting = this.bankRouting
        val __accountRoutings = (_root_.scala.collection.immutable.Vector.newBuilder[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc] ++= this.accountRoutings)
        var _done__ = false
        while (!_done__) {
          val _tag__ = _input__.readTag()
          _tag__ match {
            case 0 => _done__ = true
            case 10 =>
              __id = _input__.readString()
            case 18 =>
              __holder = Option(_root_.scalapb.LiteParser.readMessage(_input__, __holder.getOrElse(code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc.defaultInstance)))
            case 26 =>
              __bankRouting = Option(_root_.scalapb.LiteParser.readMessage(_input__, __bankRouting.getOrElse(code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc.defaultInstance)))
            case 34 =>
              __accountRoutings += _root_.scalapb.LiteParser.readMessage(_input__, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc.defaultInstance)
            case tag => _input__.skipField(tag)
          }
        }
        code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc(
            id = __id,
            holder = __holder,
            bankRouting = __bankRouting,
            accountRoutings = __accountRoutings.result()
        )
      }
      def withId(__v: _root_.scala.Predef.String): CoreCounterpartyJsonV300Grpc = copy(id = __v)
      def getHolder: code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc = holder.getOrElse(code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc.defaultInstance)
      def clearHolder: CoreCounterpartyJsonV300Grpc = copy(holder = None)
      def withHolder(__v: code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc): CoreCounterpartyJsonV300Grpc = copy(holder = Option(__v))
      def getBankRouting: code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc = bankRouting.getOrElse(code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc.defaultInstance)
      def clearBankRouting: CoreCounterpartyJsonV300Grpc = copy(bankRouting = None)
      def withBankRouting(__v: code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc): CoreCounterpartyJsonV300Grpc = copy(bankRouting = Option(__v))
      def clearAccountRoutings = copy(accountRoutings = _root_.scala.collection.Seq.empty)
      def addAccountRoutings(__vs: code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc*): CoreCounterpartyJsonV300Grpc = addAllAccountRoutings(__vs)
      def addAllAccountRoutings(__vs: TraversableOnce[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc]): CoreCounterpartyJsonV300Grpc = copy(accountRoutings = accountRoutings ++ __vs)
      def withAccountRoutings(__v: _root_.scala.collection.Seq[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc]): CoreCounterpartyJsonV300Grpc = copy(accountRoutings = __v)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => {
            val __t = id
            if (__t != "") __t else null
          }
          case 2 => holder.orNull
          case 3 => bankRouting.orNull
          case 4 => accountRoutings
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PString(id)
          case 2 => holder.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
          case 3 => bankRouting.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
          case 4 => _root_.scalapb.descriptors.PRepeated(accountRoutings.map(_.toPMessage)(_root_.scala.collection.breakOut))
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc
  }
  
  object CoreCounterpartyJsonV300Grpc extends scalapb.GeneratedMessageCompanion[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc] = this
    def fromFieldsMap(__fieldsMap: scala.collection.immutable.Map[_root_.com.google.protobuf.Descriptors.FieldDescriptor, scala.Any]): code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc = {
      require(__fieldsMap.keys.forall(_.getContainingType() == javaDescriptor), "FieldDescriptor does not match message type.")
      val __fields = javaDescriptor.getFields
      code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc(
        __fieldsMap.getOrElse(__fields.get(0), "").asInstanceOf[_root_.scala.Predef.String],
        __fieldsMap.get(__fields.get(1)).asInstanceOf[scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc]],
        __fieldsMap.get(__fields.get(2)).asInstanceOf[scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc]],
        __fieldsMap.getOrElse(__fields.get(3), Nil).asInstanceOf[_root_.scala.collection.Seq[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc]]
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        require(__fieldsMap.keys.forall(_.containingMessage == scalaDescriptor), "FieldDescriptor does not match message type.")
        code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc(
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).flatMap(_.as[scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc]]),
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(3).get).flatMap(_.as[scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc]]),
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(4).get).map(_.as[_root_.scala.collection.Seq[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc]]).getOrElse(_root_.scala.collection.Seq.empty)
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.javaDescriptor.getNestedTypes.get(5)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.scalaDescriptor.nestedMessages(5)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 2 => __out = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc
        case 3 => __out = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc
        case 4 => __out = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc(
    )
    implicit class CoreCounterpartyJsonV300GrpcLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreCounterpartyJsonV300Grpc](_l) {
      def id: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.id)((c_, f_) => c_.copy(id = f_))
      def holder: _root_.scalapb.lenses.Lens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc] = field(_.getHolder)((c_, f_) => c_.copy(holder = Option(f_)))
      def optionalHolder: _root_.scalapb.lenses.Lens[UpperPB, scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountHolderJSONGrpc]] = field(_.holder)((c_, f_) => c_.copy(holder = f_))
      def bankRouting: _root_.scalapb.lenses.Lens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc] = field(_.getBankRouting)((c_, f_) => c_.copy(bankRouting = Option(f_)))
      def optionalBankRouting: _root_.scalapb.lenses.Lens[UpperPB, scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.BankRoutingJsonV121Grpc]] = field(_.bankRouting)((c_, f_) => c_.copy(bankRouting = f_))
      def accountRoutings: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.collection.Seq[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AccountRoutingJsonV121Grpc]] = field(_.accountRoutings)((c_, f_) => c_.copy(accountRoutings = f_))
    }
    final val ID_FIELD_NUMBER = 1
    final val HOLDER_FIELD_NUMBER = 2
    final val BANK_ROUTING_FIELD_NUMBER = 3
    final val ACCOUNT_ROUTINGS_FIELD_NUMBER = 4
  }
  
  @SerialVersionUID(0L)
  final case class AmountOfMoneyJsonV121Grpc(
      currency: _root_.scala.Predef.String = "",
      amount: _root_.scala.Predef.String = ""
      ) extends scalapb.GeneratedMessage with scalapb.Message[AmountOfMoneyJsonV121Grpc] with scalapb.lenses.Updatable[AmountOfMoneyJsonV121Grpc] {
      @transient
      private[this] var __serializedSizeCachedValue: _root_.scala.Int = 0
      private[this] def __computeSerializedValue(): _root_.scala.Int = {
        var __size = 0
        if (currency != "") { __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(1, currency) }
        if (amount != "") { __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(2, amount) }
        __size
      }
      final override def serializedSize: _root_.scala.Int = {
        var read = __serializedSizeCachedValue
        if (read == 0) {
          read = __computeSerializedValue()
          __serializedSizeCachedValue = read
        }
        read
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        {
          val __v = currency
          if (__v != "") {
            _output__.writeString(1, __v)
          }
        };
        {
          val __v = amount
          if (__v != "") {
            _output__.writeString(2, __v)
          }
        };
      }
      def mergeFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc = {
        var __currency = this.currency
        var __amount = this.amount
        var _done__ = false
        while (!_done__) {
          val _tag__ = _input__.readTag()
          _tag__ match {
            case 0 => _done__ = true
            case 10 =>
              __currency = _input__.readString()
            case 18 =>
              __amount = _input__.readString()
            case tag => _input__.skipField(tag)
          }
        }
        code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc(
            currency = __currency,
            amount = __amount
        )
      }
      def withCurrency(__v: _root_.scala.Predef.String): AmountOfMoneyJsonV121Grpc = copy(currency = __v)
      def withAmount(__v: _root_.scala.Predef.String): AmountOfMoneyJsonV121Grpc = copy(amount = __v)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => {
            val __t = currency
            if (__t != "") __t else null
          }
          case 2 => {
            val __t = amount
            if (__t != "") __t else null
          }
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PString(currency)
          case 2 => _root_.scalapb.descriptors.PString(amount)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc
  }
  
  object AmountOfMoneyJsonV121Grpc extends scalapb.GeneratedMessageCompanion[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc] = this
    def fromFieldsMap(__fieldsMap: scala.collection.immutable.Map[_root_.com.google.protobuf.Descriptors.FieldDescriptor, scala.Any]): code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc = {
      require(__fieldsMap.keys.forall(_.getContainingType() == javaDescriptor), "FieldDescriptor does not match message type.")
      val __fields = javaDescriptor.getFields
      code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc(
        __fieldsMap.getOrElse(__fields.get(0), "").asInstanceOf[_root_.scala.Predef.String],
        __fieldsMap.getOrElse(__fields.get(1), "").asInstanceOf[_root_.scala.Predef.String]
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        require(__fieldsMap.keys.forall(_.containingMessage == scalaDescriptor), "FieldDescriptor does not match message type.")
        code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc(
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).map(_.as[_root_.scala.Predef.String]).getOrElse("")
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.javaDescriptor.getNestedTypes.get(6)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.scalaDescriptor.nestedMessages(6)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = throw new MatchError(__number)
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc(
    )
    implicit class AmountOfMoneyJsonV121GrpcLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc](_l) {
      def currency: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.currency)((c_, f_) => c_.copy(currency = f_))
      def amount: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.amount)((c_, f_) => c_.copy(amount = f_))
    }
    final val CURRENCY_FIELD_NUMBER = 1
    final val AMOUNT_FIELD_NUMBER = 2
  }
  
  /** @param posted
    *       google.protobuf.Timestamp posted = 3;
    *       google.protobuf.Timestamp completed = 4;
    */
  @SerialVersionUID(0L)
  final case class CoreTransactionDetailsJSONGrpc(
      `type`: _root_.scala.Predef.String = "",
      description: _root_.scala.Predef.String = "",
      posted: _root_.scala.Predef.String = "",
      completed: _root_.scala.Predef.String = "",
      newBalance: scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc] = None,
      value: scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc] = None
      ) extends scalapb.GeneratedMessage with scalapb.Message[CoreTransactionDetailsJSONGrpc] with scalapb.lenses.Updatable[CoreTransactionDetailsJSONGrpc] {
      @transient
      private[this] var __serializedSizeCachedValue: _root_.scala.Int = 0
      private[this] def __computeSerializedValue(): _root_.scala.Int = {
        var __size = 0
        if (`type` != "") { __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(1, `type`) }
        if (description != "") { __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(2, description) }
        if (posted != "") { __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(3, posted) }
        if (completed != "") { __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(4, completed) }
        if (newBalance.isDefined) { __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(newBalance.get.serializedSize) + newBalance.get.serializedSize }
        if (value.isDefined) { __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(value.get.serializedSize) + value.get.serializedSize }
        __size
      }
      final override def serializedSize: _root_.scala.Int = {
        var read = __serializedSizeCachedValue
        if (read == 0) {
          read = __computeSerializedValue()
          __serializedSizeCachedValue = read
        }
        read
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        {
          val __v = `type`
          if (__v != "") {
            _output__.writeString(1, __v)
          }
        };
        {
          val __v = description
          if (__v != "") {
            _output__.writeString(2, __v)
          }
        };
        {
          val __v = posted
          if (__v != "") {
            _output__.writeString(3, __v)
          }
        };
        {
          val __v = completed
          if (__v != "") {
            _output__.writeString(4, __v)
          }
        };
        newBalance.foreach { __v =>
          _output__.writeTag(5, 2)
          _output__.writeUInt32NoTag(__v.serializedSize)
          __v.writeTo(_output__)
        };
        value.foreach { __v =>
          _output__.writeTag(6, 2)
          _output__.writeUInt32NoTag(__v.serializedSize)
          __v.writeTo(_output__)
        };
      }
      def mergeFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc = {
        var __type = this.`type`
        var __description = this.description
        var __posted = this.posted
        var __completed = this.completed
        var __newBalance = this.newBalance
        var __value = this.value
        var _done__ = false
        while (!_done__) {
          val _tag__ = _input__.readTag()
          _tag__ match {
            case 0 => _done__ = true
            case 10 =>
              __type = _input__.readString()
            case 18 =>
              __description = _input__.readString()
            case 26 =>
              __posted = _input__.readString()
            case 34 =>
              __completed = _input__.readString()
            case 42 =>
              __newBalance = Option(_root_.scalapb.LiteParser.readMessage(_input__, __newBalance.getOrElse(code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc.defaultInstance)))
            case 50 =>
              __value = Option(_root_.scalapb.LiteParser.readMessage(_input__, __value.getOrElse(code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc.defaultInstance)))
            case tag => _input__.skipField(tag)
          }
        }
        code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc(
            `type` = __type,
            description = __description,
            posted = __posted,
            completed = __completed,
            newBalance = __newBalance,
            value = __value
        )
      }
      def withType(__v: _root_.scala.Predef.String): CoreTransactionDetailsJSONGrpc = copy(`type` = __v)
      def withDescription(__v: _root_.scala.Predef.String): CoreTransactionDetailsJSONGrpc = copy(description = __v)
      def withPosted(__v: _root_.scala.Predef.String): CoreTransactionDetailsJSONGrpc = copy(posted = __v)
      def withCompleted(__v: _root_.scala.Predef.String): CoreTransactionDetailsJSONGrpc = copy(completed = __v)
      def getNewBalance: code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc = newBalance.getOrElse(code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc.defaultInstance)
      def clearNewBalance: CoreTransactionDetailsJSONGrpc = copy(newBalance = None)
      def withNewBalance(__v: code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc): CoreTransactionDetailsJSONGrpc = copy(newBalance = Option(__v))
      def getValue: code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc = value.getOrElse(code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc.defaultInstance)
      def clearValue: CoreTransactionDetailsJSONGrpc = copy(value = None)
      def withValue(__v: code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc): CoreTransactionDetailsJSONGrpc = copy(value = Option(__v))
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => {
            val __t = `type`
            if (__t != "") __t else null
          }
          case 2 => {
            val __t = description
            if (__t != "") __t else null
          }
          case 3 => {
            val __t = posted
            if (__t != "") __t else null
          }
          case 4 => {
            val __t = completed
            if (__t != "") __t else null
          }
          case 5 => newBalance.orNull
          case 6 => value.orNull
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PString(`type`)
          case 2 => _root_.scalapb.descriptors.PString(description)
          case 3 => _root_.scalapb.descriptors.PString(posted)
          case 4 => _root_.scalapb.descriptors.PString(completed)
          case 5 => newBalance.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
          case 6 => value.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc
  }
  
  object CoreTransactionDetailsJSONGrpc extends scalapb.GeneratedMessageCompanion[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc] = this
    def fromFieldsMap(__fieldsMap: scala.collection.immutable.Map[_root_.com.google.protobuf.Descriptors.FieldDescriptor, scala.Any]): code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc = {
      require(__fieldsMap.keys.forall(_.getContainingType() == javaDescriptor), "FieldDescriptor does not match message type.")
      val __fields = javaDescriptor.getFields
      code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc(
        __fieldsMap.getOrElse(__fields.get(0), "").asInstanceOf[_root_.scala.Predef.String],
        __fieldsMap.getOrElse(__fields.get(1), "").asInstanceOf[_root_.scala.Predef.String],
        __fieldsMap.getOrElse(__fields.get(2), "").asInstanceOf[_root_.scala.Predef.String],
        __fieldsMap.getOrElse(__fields.get(3), "").asInstanceOf[_root_.scala.Predef.String],
        __fieldsMap.get(__fields.get(4)).asInstanceOf[scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc]],
        __fieldsMap.get(__fields.get(5)).asInstanceOf[scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc]]
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        require(__fieldsMap.keys.forall(_.containingMessage == scalaDescriptor), "FieldDescriptor does not match message type.")
        code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc(
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(3).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(4).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(5).get).flatMap(_.as[scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc]]),
          __fieldsMap.get(scalaDescriptor.findFieldByNumber(6).get).flatMap(_.as[scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc]])
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.javaDescriptor.getNestedTypes.get(7)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.scalaDescriptor.nestedMessages(7)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 5 => __out = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc
        case 6 => __out = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc(
    )
    implicit class CoreTransactionDetailsJSONGrpcLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionDetailsJSONGrpc](_l) {
      def `type`: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.`type`)((c_, f_) => c_.copy(`type` = f_))
      def description: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.description)((c_, f_) => c_.copy(description = f_))
      def posted: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.posted)((c_, f_) => c_.copy(posted = f_))
      def completed: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.completed)((c_, f_) => c_.copy(completed = f_))
      def newBalance: _root_.scalapb.lenses.Lens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc] = field(_.getNewBalance)((c_, f_) => c_.copy(newBalance = Option(f_)))
      def optionalNewBalance: _root_.scalapb.lenses.Lens[UpperPB, scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc]] = field(_.newBalance)((c_, f_) => c_.copy(newBalance = f_))
      def value: _root_.scalapb.lenses.Lens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc] = field(_.getValue)((c_, f_) => c_.copy(value = Option(f_)))
      def optionalValue: _root_.scalapb.lenses.Lens[UpperPB, scala.Option[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.AmountOfMoneyJsonV121Grpc]] = field(_.value)((c_, f_) => c_.copy(value = f_))
    }
    final val TYPE_FIELD_NUMBER = 1
    final val DESCRIPTION_FIELD_NUMBER = 2
    final val POSTED_FIELD_NUMBER = 3
    final val COMPLETED_FIELD_NUMBER = 4
    final val NEW_BALANCE_FIELD_NUMBER = 5
    final val VALUE_FIELD_NUMBER = 6
  }
  
  implicit class CoreTransactionsJsonV300GrpcLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, code.obp.grpc.api.CoreTransactionsJsonV300Grpc](_l) {
    def transactions: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.collection.Seq[code.obp.grpc.api.CoreTransactionsJsonV300Grpc.CoreTransactionJsonV300Grpc]] = field(_.transactions)((c_, f_) => c_.copy(transactions = f_))
  }
  final val TRANSACTIONS_FIELD_NUMBER = 1
}
