@Override
    public final synchronized V get() throws InterruptedException, ExecutionException {
        while (result == null && exception == null && !cancelled) {
            futureWait();
        }

        return getOrThrowExecutionException();
    }
@Test(expected = TimeoutException.class)
    public void simpleSmackFutureTimeoutTest() throws InterruptedException, ExecutionException, TimeoutException {
        InternalProcessStanzaSmackFuture<Boolean, Exception> future = new SimpleInternalProcessStanzaSmackFuture<Boolean, Exception>() {
            @Override
            protected void handleStanza(Stanza stanza) {
            }
        };

        future.get(5, TimeUnit.SECONDS);
    }