class KeyChainGroup implements KeyBag {

    public Address currentAddress(KeyChain.KeyPurpose purpose) {
        DeterministicKeyChain chain = getActiveKeyChain();
        if (chain.isMarried()) {
            Address current = currentAddresses.get(purpose);
            if (current == null) {
                current = freshAddress(purpose);
                currentAddresses.put(purpose, current);
            }
            return current;
        } else {
            return LegacyAddress.fromKey(params, currentKey(purpose));
        }
    }

    public  KeyChainGroup(NetworkParameters params);
    public  KeyChainGroup(NetworkParameters params, DeterministicSeed seed);
    public  KeyChainGroup(NetworkParameters params, DeterministicSeed seed, ImmutableList<ChildNumber> accountPath);
    public  KeyChainGroup(NetworkParameters params, DeterministicKey watchKey);
    public  KeyChainGroup(NetworkParameters params, DeterministicKey accountKey, boolean watch);
    private  KeyChainGroup(NetworkParameters params, @Nullable BasicKeyChain basicKeyChain, List<DeterministicKeyChain> chains,
                          @Nullable EnumMap<KeyChain.KeyPurpose, DeterministicKey> currentKeys, @Nullable KeyCrypter crypter);

}