@Override
	public Serializable receiveObject() throws IOException, ClassNotFoundException {
		Random random = new Random();

		while(incomingObjects.isEmpty()) {
			Serializable object = super.receiveObject();
			if(object == null) return null;
			
			// Drop object?
			if(random.nextInt(100) < DROP_PROBABILITY) {
				if(ENABLE_DEBUG_OUTPUT) System.err.println("DROP: " + object);
				continue;
			}
			incomingObjects.add(object);
			
			// Duplicate object?
			if(random.nextInt(100) < DUPLICATE_PROBABILITY) {
				if(ENABLE_DEBUG_OUTPUT) System.err.println("DUPLICATE: " + object);
				incomingObjects.add(object);
			}
		}

		// Delay object?
		if(random.nextInt(100) < DELAY_PROBABILITY) {
			int delay = random.nextInt(MAX_DELAY);
			if(ENABLE_DEBUG_OUTPUT) System.err.println("DELAY: " + incomingObjects.get(0));
			try { Thread.sleep(delay); } catch (InterruptedException e) { }
		}

		return incomingObjects.remove(0);
	}