@@ -0,0 +1,795 @@
+package jetbrains.jetpad.base;%0A%0Apublic class ThreadSafeSimpleAsync%3CItemT%3E implements Async%3CItemT%3E %7B%0A  private final SimpleAsync%3CItemT%3E myAsync;%0A%0A  public ThreadSafeSimpleAsync() %7B%0A    myAsync = new SimpleAsync%3C%3E();%0A  %7D%0A%0A  @Override%0A  public Async%3CItemT%3E onSuccess(final Handler%3C? super ItemT%3E handler) %7B%0A    synchronized (myAsync) %7B%0A      myAsync.onSuccess(handler);%0A      return this;%0A    %7D%0A  %7D%0A%0A  @Override%0A  public Async%3CItemT%3E onFailure(final Handler%3CThrowable%3E handler) %7B%0A    synchronized (myAsync) %7B%0A      myAsync.onFailure(handler);%0A      return this;%0A    %7D%0A  %7D%0A%0A  public void success(ItemT item) %7B%0A    synchronized (myAsync) %7B%0A      myAsync.success(item);%0A    %7D%0A  %7D%0A%0A  public void failure(Throwable throwable) %7B%0A    synchronized (myAsync) %7B%0A      myAsync.failure(throwable);%0A    %7D%0A  %7D%0A%7D%0A

move ThreadSafeSimpleAsync to jetpad.base module