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;
  }
}

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
{
  public @interface DoNotCopyThisAnnotation
  {
  }

  @Observable
  @Nonnull
  @DoNotCopyThisAnnotation
  public String getTime()
  {
    return "";
  }

  @Observable
  @DoNotCopyThisAnnotation
  public void setTime( @Nonnull @DoNotCopyThisAnnotation final String time )
  {
  }

  @Action
  @DoNotCopyThisAnnotation
  public void doStuff( @Nonnull @DoNotCopyThisAnnotation final String time )
  {
  }

  @Memoize
  @Nonnull
  @DoNotCopyThisAnnotation
  public Integer someValue()
  {
    return 0;
  }
}

Use an explicit annotation in test for non copying annotation
Use an explicit annotation in test for non copying annotation
