code: def generate(passphrase, trees=['primary']):
      
      seeds, multi_wallet = MultiWallet.generate(trees, entropy=True)
  
      result = {}
      for tree in trees:
          result[tree] = dict(private_seed=seeds[tree],
                              public_seed=multi_wallet.public_wif(tree),
                              encrypted_seed=PassphraseBox.encrypt(passphrase,
                                                                   seeds[tree]))
      return result
docs: Generate a seed for the primary tree of a Gem wallet.
  
      You may choose to store the passphrase for a user so the user doesn't have
      to type it in every time. This is okay (although the security risks should
      be obvious) but Gem strongly discourages storing even the encrypted private
      seed, and storing both the passphrase and the private seed is completely
      insane. Don't do it.
  
      Args:
        passphrase (str): The passphrase that will be used to encrypt the seed
          before it's send to Gem. Key-stretching is done with PBDKF2 and
          encryption is done with nacl's SecretBox.
        trees (list of str): A list of names to generate trees for. For User
          Wallets this will be ['primary'], for Application Wallets it will be
         ['primary', 'backup'].
  
      Returns:
        A dict of dicts containing the serialized public master node, and
         a sub-dict with the encrypted private seed for each tree in `trees`.