@Override
    public IQ handleIQ(IQ packet) {
        // Do nothing if server is not enabled
        if (!ENABLED.getValue()) {
            Log.trace("Responding with 'service-unavailable' since to service is not enabled, to: {}", packet);
            IQ reply = IQ.createResultIQ(packet);
            reply.setChildElement(packet.getChildElement().createCopy());
            reply.setError(PacketError.Condition.service_unavailable);
            return reply;
        }

        if (packet.getTo() == null || packet.getTo().equals( new JID(XMPPServer.getInstance().getServerInfo().getXMPPDomain())) )
        {
            // packet addressed to service itself (not to a node/user)
            return switch (packet.getType()) {
                case set -> handleIQSetToService(packet);
                case get -> handleIQGetToService(packet);
                default -> null; // Ignore 'error' and 'result' stanzas.
            };
        }
        else
        {
            // packet was addressed to a node.
            if ( packet.isRequest() ) {
                return handleIQRequestToUser( packet );
            } else {
                return null; // Ignore IQ packets of type 'error' or 'result'.
            }
        }
    }
Implements ServerFeaturesProvider to include all supported XEP-0060 features
in the server's disco#info result (as per section 4 of XEP-0163).
xmppserver/src/main/java/org/jivesoftware/openfire/pep/IQPEPHandler.java