@@ -0,0 +1,542 @@
+package net.sf.kerner.utils.async;%0A%0Aimport java.util.concurrent.Callable;%0A%0Apublic abstract class AbstractAsyncTaskCallable%3CR, V%3E extends AbstractAsyncTask%3CR, V%3E implements Callable%3CVoid%3E %7B%0A%0A    protected V value;%0A%0A    /**%0A     * Don't override. Override %7B@link #run(Object)%7D%0A     */%0A    public Void call() throws Exception %7B%0A        execute(getValue());%0A        return null;%0A    %7D%0A%0A    public synchronized V getValue() %7B%0A        return value;%0A    %7D%0A%0A    public synchronized void setValue(final V value) %7B%0A        this.value = value;%0A    %7D%0A%0A%7D%0A

Introduce AbstractAsyncTaskCallable.