import java.lang.annotation.*;

interface Marker {}

@Retention(RetentionPolicy.RUNTIME) @interface Color { String value();}

// Put the marker interface on a particular type and add the annotation on 
// types with that interface.
// decp specified first
public aspect DecaDecpInteractions4 {

  declare parents: A* implements Marker;

  declare @type: Marker+ : @Color("red");
}

aspect X {
  before(): execution(* *(..)) && this(Marker) {
    System.err.println("Marker interface identified on "+thisJoinPoint);
  }
  before(): execution(* *(..)) && @this(Color) {
    System.err.println("Color annotation identified on "+thisJoinPoint);
  }
}