@Override
    protected void expire(List<Node> expired) {
        int previouslyExpired = numberOfPreviouslyExpired();
        for (Node expiredNode : expired) {
            if (expiredNode.type() != NodeType.host)
                continue;
            boolean forceDeprovision = maximumAllowedExpiredHosts.value() < ++previouslyExpired;
            nodeRepository().nodes().parkRecursively(expiredNode.hostname(), Agent.ProvisionedExpirer,
                    forceDeprovision, "Node is stuck in provisioned");
        }
    }
This moves nodes of type {@link NodeType#host} from provisioned to parked if they have been in provisioned too long.
Parked hosts are deprovisioned as well, if too many hosts are being expired.

Only {@link NodeType#host} is moved because any number of nodes of that type can exist. Other node types such as
{@link NodeType#confighost} have a fixed number and thus cannot be replaced while the fixed number of nodes exist in
any state.

@author freva
node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ProvisionedExpirer.java