Estimate the time needed to apply upgrades.

        If an upgrades does not specify and estimate it is assumed to be
        in the order of 1 second.

        :param upgrades: List of upgrades sorted in topological order.

def estimate(self, upgrades):
        """Estimate the time needed to apply upgrades.

        If an upgrades does not specify and estimate it is assumed to be
        in the order of 1 second.

        :param upgrades: List of upgrades sorted in topological order.
        """
        val = 0
        for u in upgrades:
            val += u.estimate()
        return val