public Tristate hasNode(DataType type, Node node, NodeEqualityPredicate equalityPredicate) {
        if (this.getType() == HolderType.GROUP && node instanceof InheritanceNode && ((InheritanceNode) node).getGroupName().equalsIgnoreCase(getIdentifier().getName())) {
            return Tristate.TRUE;
        }

        Collection<Node> nodes;
        if (NodeEquality.comparesContexts(equalityPredicate)) {
            nodes = getData(type).nodesInContext(node.getContexts());
        } else {
            nodes = getData(type).asList();
        }

        for (Node other : nodes) {
            if (equalityPredicate.areEqual(node, other)) {
                return Tristate.of(other.getValue());
            }
        }

        return Tristate.UNDEFINED;
    }
Removes temporary permissions that have expired

@return true if permissions had expired and were removed
common/src/main/java/me/lucko/luckperms/common/model/PermissionHolder.java