import arez.annotations.Action;
import arez.annotations.ArezComponent;
import arez.annotations.Memoize;
import arez.annotations.Observable;
import javax.annotation.Nonnull;

@ArezComponent
public abstract class AnnotationsOnModel
{
  @Observable
  @Nonnull
  @SuppressWarnings( "ThisANnotationShouldNotBeCopied" )
  public String getTime()
  {
    return "";
  }

  @Observable
  @SuppressWarnings( "ThisANnotationShouldNotBeCopied" )
  public void setTime( @Nonnull @SuppressWarnings( "ThisANnotationShouldNotBeCopied" ) final String time )
  {
  }

  @Action
  @SuppressWarnings( "ThisANnotationShouldNotBeCopied" )
  public void doStuff( @Nonnull @SuppressWarnings( "ThisANnotationShouldNotBeCopied" ) final String time )
  {
  }

  @Memoize
  @Nonnull
  @SuppressWarnings( "ThisANnotationShouldNotBeCopied" )
  public Integer someValue()
  {
    return 0;
  }
}

@@ -225,16 +225,69 @@
 Model%0A%7B%0A
+  public @interface DoNotCopyThisAnnotation%0A  %7B%0A  %7D%0A%0A
   @Obser
@@ -310,41 +310,31 @@
 %0A  @
-SuppressWarnings( %22
+DoNotCopy
 ThisA
-N
+n
 notation
 Shou
@@ -329,36 +329,16 @@
 notation
-ShouldNotBeCopied%22 )
 %0A  publi
@@ -401,41 +401,31 @@
 %0A  @
-SuppressWarnings( %22
+DoNotCopy
 ThisA
-N
+n
 notation
 Shou
@@ -420,36 +420,16 @@
 notation
-ShouldNotBeCopied%22 )
 %0A  publi
@@ -458,41 +458,31 @@
 ll @
-SuppressWarnings( %22
+DoNotCopy
 ThisA
-N
+n
 notation
 Shou
@@ -477,36 +477,16 @@
 notation
-ShouldNotBeCopied%22 )
  final S
@@ -524,41 +524,31 @@
 %0A  @
-SuppressWarnings( %22
+DoNotCopy
 ThisA
-N
+n
 notation
 Shou
@@ -543,36 +543,16 @@
 notation
-ShouldNotBeCopied%22 )
 %0A  publi
@@ -581,41 +581,31 @@
 ll @
-SuppressWarnings( %22
+DoNotCopy
 ThisA
-N
+n
 notation
 Shou
@@ -600,36 +600,16 @@
 notation
-ShouldNotBeCopied%22 )
  final S
@@ -659,41 +659,31 @@
 %0A  @
-SuppressWarnings( %22
+DoNotCopy
 ThisA
-N
+n
 notation
 Shou
@@ -682,28 +682,8 @@
 tion
-ShouldNotBeCopied%22 )
 %0A  p

Use an explicit annotation in test for non copying annotation