code: func ValidateBundleSignatures(bundle Bundle) (bool, error) {
  	for i := range bundle {
  		tx := &bundle[i]
  
  		// check whether input transaction
  		if tx.Value >= 0 {
  			continue
  		}
  
  		// it is unknown how many fragments there will be
  		fragments := []Trytes{tx.SignatureMessageFragment}
  
  		// find the subsequent txs containing the remaining signature
  		// message fragments for this input transaction
  		for j := i; j < len(bundle)-1; j++ {
  			otherTx := &bundle[j+1]
  			if otherTx.Value != 0 || otherTx.Address != tx.Address {
  				continue
  			}
  
  			fragments = append(fragments, otherTx.SignatureMessageFragment)
  		}
  
  		valid, err := signing.ValidateSignatures(tx.Address, fragments, tx.Bundle)
  		if err != nil {
  			return false, err
  		}
  		if !valid {
  			return false, nil
  		}
  	}
  	return true, nil
  }
docs: // ValidateBundleSignatures validates all signatures of the given bundle.
  // Use ValidBundle() if you want to validate the overall structure of the bundle and the signatures.