String description(long generation, NodeList clusterNodes) {
        var node = clusterNodes.node(hostname);
        if (node.isEmpty()) return "(no node " + hostname + ")";
        return "gen " + generation + " since " + generationChange(generation) + ", up " + node.get().history().event(History.Event.Type.up) +
               ": " + (snapshots.isEmpty() ? "(no snapshots)" : snapshots.get(snapshots.size()-1));
    }
Returns the instant this changed to the given generation, or empty if no *change* to this generation is present
node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/NodeTimeseries.java