package arez.annotations;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;

/**
 * Annotate the method that will be overridden to provider the debug name for the Arez component.
 * This is useful when the user wants to manually create Arez elements (i.e. Observables,
 * Observeds, Computeds etc) and wants to use the same naming convention as the generated Arez
 * subclass. If not specified Arez will generate a private method (currently named <tt>$$arez$$_name()</tt>)
 * that serves the same purpose. The method returns a string name for the model if names are enabled.
 *
 * <p>This annotation should appear at most once on a component. The
 * annotation should be on a method that accepts no parameters and returns
 * a String.</p>
 *
 * <p>The method that is annotated with @ComponentNameRef must comply with the additional constraints:</p>
 * <ul>
 * <li>Must not be annotated with any other arez annotation</li>
 * <li>Must have 0 parameters</li>
 * <li>Must return a String</li>
 * <li>Must not be private</li>
 * <li>Must not be static</li>
 * <li>Must not be final</li>
 * <li>Must be abstract</li>
 * <li>Must not throw exceptions</li>
 * </ul>
 *
 * @see ComponentId
 * @see ComponentTypeNameRef
 */
@Documented
@Target( ElementType.METHOD )
public @interface ComponentNameRef
{
}

@@ -321,43 +321,123 @@
 .e. 
-Observables,%0A * Observeds, Computed
+%7B@link arez.ObservableValue%7D instances,%0A * %7B@link arez.Observer%7D instances or %7B@link arez.ComputableValue%7D instance
 s et
@@ -471,16 +471,19 @@
 e naming
+%0A *
  convent
@@ -507,19 +507,16 @@
 ted Arez
-%0A *
  subclas
@@ -587,16 +587,19 @@
 ly named
+%0A *
  %3Ctt%3E$$a
@@ -616,19 +616,16 @@
 ()%3C/tt%3E)
-%0A *
  that se
@@ -702,16 +702,19 @@
 if names
+%0A *
  are ena

Add cross links into javadocs