// Path: src/main/java/nl/pvdberg/pnet/event/PNetListener.java
// public interface PNetListener
// {
//     /**
//      * Called when a connection is made
//      * @param c Connected Client
//      */
//     void onConnect(final Client c);
// 
//     /**
//      * Called when a connection is lost
//      * @param c Lost Client
//      */
//     void onDisconnect(final Client c);
// 
//     /**
//      * Called when a new Packet has been received. May throw a caught and silenced IOException
//      * @param p New Packet
//      * @param c Sender
//      * @throws IOException when anything goes wrong during data extraction. This exception is caught because invalid Packets should not crash the Client or Server
//      */
//     void onReceive(final Packet p, final Client c) throws IOException;
// }
// 
// Path: src/main/java/nl/pvdberg/pnet/server/Server.java
// public interface Server
// {
//     /**
//      * Sets the event listener
//      * @param serverListener Nullable event listener
//      */
//     void setListener(final PNetListener serverListener);
// 
//     /**
//      * Starts the server at given port
//      * @param port Port to listen to
//      * @return Successful
//      */
//     boolean start(int port);
// 
//     /**
//      * Closes all sockets and stops the acceptor thread
//      */
//     void stop();
// }


import nl.pvdberg.pnet.event.PNetListener;
import nl.pvdberg.pnet.server.Server;

package nl.pvdberg.pnet.server.util;


public class ServerDecorator implements Server
{
    protected final Server server;

    public ServerDecorator(final Server server)
    {
        this.server = server;
    }

    @Override

// Path: src/main/java/nl/pvdberg/pnet/event/PNetListener.java
// public interface PNetListener
// {
//     /**
//      * Called when a connection is made
//      * @param c Connected Client
//      */
//     void onConnect(final Client c);
// 
//     /**
//      * Called when a connection is lost
//      * @param c Lost Client
//      */
//     void onDisconnect(final Client c);
// 
//     /**
//      * Called when a new Packet has been received. May throw a caught and silenced IOException
//      * @param p New Packet
//      * @param c Sender
//      * @throws IOException when anything goes wrong during data extraction. This exception is caught because invalid Packets should not crash the Client or Server
//      */
//     void onReceive(final Packet p, final Client c) throws IOException;
// }
// 
// Path: src/main/java/nl/pvdberg/pnet/server/Server.java
// public interface Server
// {
//     /**
//      * Sets the event listener
//      * @param serverListener Nullable event listener
//      */
//     void setListener(final PNetListener serverListener);
// 
//     /**
//      * Starts the server at given port
//      * @param port Port to listen to
//      * @return Successful
//      */
//     boolean start(int port);
// 
//     /**
//      * Closes all sockets and stops the acceptor thread
//      */
//     void stop();
// }


// Path: src/main/java/nl/pvdberg/pnet/server/util/ServerDecorator.java
import nl.pvdberg.pnet.event.PNetListener;
import nl.pvdberg.pnet.server.Server;

package nl.pvdberg.pnet.server.util;


public class ServerDecorator implements Server
{
    protected final Server server;

    public ServerDecorator(final Server server)
    {
        this.server = server;
    }

    @Override

    public void setListener(final PNetListener serverListener)
