> but am I excluding it correctly?
> What does excluding even mean?
"Excluding" means "do not instrument", which in turns means do not
"duplicate methods" (for more information about "Duplicate methods" see
the GK paper of Multiprog 2010)
> Is it really safe to exclude all of org.deuce.*?
org.deuce.* classes are already excluded because they are annotated with
@Exclude.
Yet, Deuce runtime cannot predict beforehand if a class was
instrumented, or not. So by default, Deuce invokes the "duplicated
method" on every invocation from within an atomic method.
That is the reason why your invocation ctx.startNested(""); works fine
OUT OF an atomic method, but fails inside an atomic method. Because in
the latter case, Deuce will invoke ctx.startNested("", currentContext).
Yet, since the Context interface is correctly annotated with @Exclude it
does not provide a duplicate method startNested(String, Context) and
thus, you will get a NoSuchMethodException.
Note that every time you invoke: obj.m(), inside an Atomic method, this
invocation will be replaced by: obj.m(currentContext), where
currentContext is got from the ContextDelegator.getInstance().
Nevertheless, if you "say" to Deuce runtime that the obj class was
excluded (through the org.deuce.exclude parameter) then Deuce will not
instrument the invocation to the methods of this class.
Finally, and again, I must remember you that you should not directly use
the Contex and ContextDelegator in the domain application. That is only
acceptable for testing purposes.