class Wallet {

    public List<byte[]> getAccountAddresses() {
        List<byte[]> addresses = new ArrayList<>();
        Set<RskAddress> keys = new HashSet<>();

        synchronized(accessLock) {
            for (RskAddress addr: this.initialAccounts) {
                addresses.add(addr.getBytes());
            }

            for (byte[] address: keyDS.keys()) {
                keys.add(new RskAddress(address));
            }

            keys.addAll(accounts.keySet());
            keys.removeAll(this.initialAccounts);

            for (RskAddress addr: keys) {
                addresses.add(addr.getBytes());
            }
        }

        return addresses;
    }

    public  Wallet(KeyValueDataSource keyDS);

}