private static void populateExtensions(Wallet wallet, Protos.Wallet.Builder walletBuilder) {
   for (WalletExtension extension : wallet.getExtensions().values()) {
     Protos.Extension.Builder proto = Protos.Extension.newBuilder();
     proto.setId(extension.getWalletExtensionID());
     proto.setMandatory(extension.isWalletExtensionMandatory());
     proto.setData(ByteString.copyFrom(extension.serializeWalletExtension()));
     walletBuilder.addExtension(proto);
   }
 }
 private static void loadExtensions(Wallet wallet, Protos.Wallet walletProto) {
   final Map<String, WalletExtension> extensions = wallet.getExtensions();
   for (Protos.Extension extProto : walletProto.getExtensionList()) {
     String id = extProto.getId();
     WalletExtension extension = extensions.get(id);
     if (extension == null) {
       if (extProto.getMandatory()) {
         throw new IllegalArgumentException("Unknown mandatory extension in wallet: " + id);
       }
     } else {
       log.info("Loading wallet extension {}", id);
       try {
         extension.deserializeWalletExtension(wallet, extProto.getData().toByteArray());
       } catch (Exception e) {
         if (extProto.getMandatory())
           throw new IllegalArgumentException("Unknown mandatory extension in wallet: " + id);
       }
     }
   }
 }