class IQResultListenerTask implements ClusterTask<Void>
{
    private static Logger Log = LoggerFactory.getLogger( IQResultListenerTask.class );

    private IQ packet;

    public IQResultListenerTask()
    {
    }

    public IQResultListenerTask( IQ packet )
    {
        this.packet = packet;
    }

    @Override
    public Void getResult()
    {
        return null;
    }

    @Override
    public void run()
    {
        if ( packet != null )
        {
            XMPPServer.getInstance().getIQRouter().route( packet );
        }
    }

    @Override
    public void writeExternal( ObjectOutput out ) throws IOException
    {
        StringWriter sw = new StringWriter();
        XMLWriter writer = new XMLWriter( sw, OutputFormat.createCompactFormat() );

        try
        {
            writer.write( packet.getElement() );
        }
        catch ( Exception e )
        {
            Log.warn( "Unable to serialize packet {}", packet, e );
        }

        ExternalizableUtil.getInstance().writeSafeUTF( out, sw.toString() );
    }

    @Override
    public void readExternal( ObjectInput in ) throws IOException, ClassNotFoundException
    {<FILL_FUNCTION_BODY>}
}

        final String xml = ExternalizableUtil.getInstance().readSafeUTF( in );
        try
        {
            final Element el = DocumentHelper.parseText( xml ).getRootElement();
            packet = new IQ( el );
        }
        catch ( Exception e )
        {
            Log.warn( "Unable to deserialize string '{}'", xml, e );
        }
    
<no_super_class>