class VoteTallyCache {

  public VoteTally getVoteTallyAfterBlock(final BlockHeader header) {
    try {
      return voteTallyCache.get(header.getHash(), () -> populateCacheUptoAndIncluding(header));
    } catch (final ExecutionException ex) {
      throw new RuntimeException("Unable to determine a VoteTally object for the requested block.");
    }
  }

  public  VoteTallyCache(
      final Blockchain blockchain,
      final VoteTallyUpdater voteTallyUpdater,
      final EpochManager epochManager,
      final BlockInterface blockInterface);

}