Ok, tried it and the result is not quite right which means we'll have to modify the UIThread and UIBackground handler if we want to go down this route.  For example

```java
    @IgnoredWhenDetached
    @UiThread(propagation = UiThread.Propagation.REUSE)
    protected void startBulkOperation() {
        //Do hard stuff
    }
```

Output:

```java
    @Override
    public void startBulkOperation() {
        if (Thread.currentThread() == Looper.getMainLooper().getThread()) {
            NotificationListFragment_.super.startBulkOperation();
            return ;
        }
        handler_.post(new Runnable() {
            @Override
            public void run() {
                if (this.getActivity()!= null) {
                    NotificationListFragment_.super.startBulkOperation();
                }
            }

        }
        );
    }
```

There are two issues here, one is that the UIThread handler doesn't properly keep the old transformed code before it adds its super call, second is that it doesn't compile as ```this``` refers to the runnable which getActivity() doesn't exist on, however, I can easily change that to just do extending_class.super.getActivity()

Should I go about modifying the UIThread and UIBackground handlers as well then?