class SyncQueueImpl implements SyncQueueIfc {

    ValidatedHeaders validateChain(List<HeaderElement> chain) {
        if (parentHeaderValidator == null)
            return ValidatedHeaders.Empty;

        for (int i = 1; i < chain.size(); i++) {
            BlockHeaderWrapper parent = chain.get(i - 1).header;
            BlockHeaderWrapper header = chain.get(i).header;
            if (!parentHeaderValidator.validate(header.getHeader(), parent.getHeader())) {
                return new ValidatedHeaders(Collections.singletonList(header), false,
                        parentHeaderValidator.getErrors().isEmpty() ? "" : parentHeaderValidator.getErrors().get(0));
            }
        }

        return ValidatedHeaders.Empty;
    }

    public  SyncQueueImpl(List<Block> initBlocks);
    public  SyncQueueImpl(Blockchain bc);
    public  SyncQueueImpl(Blockchain bc, Long endBlockNumber);

}