package atg.tools.dynunit;

import javax.inject.Qualifier;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * Injection annotation marking a field to be injected with a Nucleus instance. Unit tests using this annotation on a
 * public Nucleus field should initialize the injections via {@code DynUnit.init(this)}.
 *
 * @author msicker
 * @version 1.0.0
 */
@Documented
@Retention(RUNTIME)
@Target({ FIELD, METHOD })
@Qualifier
public @interface Nuke {

    /**
     * Root ATG-Config-Path to use for Nucleus instance.
     */
    public String value();
}

@@ -92,16 +92,55 @@
 mented;%0A
+import java.lang.annotation.Inherited;%0A
 import j
@@ -308,22 +308,20 @@
 entType.
-METHOD
+TYPE
 ;%0Aimport
@@ -396,130 +396,143 @@
 ion 
-annotation marking a field to be injected with a Nucleus instance. Unit tests using this annotation on a%0A * public
+qualifier for a Nucleus instance. This annotation should be used on the test class itself or on a%0A * %7B@link atg.nucleus.Nucleus
  Nucleus
  fie
@@ -531,78 +531,154 @@
 leus
+%7D
  field
- should initialize the injections via %7B@code DynUnit.init(this)%7D
+. The class should use %7B@link atg.tools.dynunit.DynUnit#init(Object)%7D to%0A * inject the Nucleus along with any Nucleus-registered components
 .%0A *
@@ -765,20 +765,18 @@
 t(%7B 
-FIELD, METHO
+TYPE, FIEL
 D %7D)
@@ -787,16 +787,27 @@
 alifier%0A
+@Inherited%0A
 public @
@@ -923,11 +923,55 @@
 value();
+%0A%0A    public String%5B%5D modules() default %7B %7D;
 %0A%7D%0A

Add module list to @Nuke.