docs: public EnvelopeInfo getEnvelopeInfo(int envelopeIndex) throws InvalidProtocolBufferException {
  
          try {
  
              EnvelopeInfo ret;
  
              if (isFiltered()) {
  
                  switch (filteredBlock.getFilteredTransactions(envelopeIndex).getType().getNumber()) {
                      case Common.HeaderType.ENDORSER_TRANSACTION_VALUE:
                          ret = new TransactionEnvelopeInfo(this.filteredBlock.getFilteredTransactions(envelopeIndex));
                          break;
                      default: //just assume base properties.
                          ret = new EnvelopeInfo(this.filteredBlock.getFilteredTransactions(envelopeIndex));
                          break;
                  }
  
              } else {
  
                  EnvelopeDeserializer ed = EnvelopeDeserializer.newInstance(block.getBlock().getData().getData(envelopeIndex), block.getTransActionsMetaData()[envelopeIndex]);
  
                  switch (ed.getType()) {
                      case Common.HeaderType.ENDORSER_TRANSACTION_VALUE:
                          ret = new TransactionEnvelopeInfo((EndorserTransactionEnvDeserializer) ed);
                          break;
                      default: //just assume base properties.
                          ret = new EnvelopeInfo(ed);
                          break;
  
                  }
  
              }
              return ret;
  
          } catch (InvalidProtocolBufferRuntimeException e) {
              throw e.getCause();
          }
  
      }