public void testDeclares() {
    IProgramElement node = model.getRoot();
    assertNotNull(node);

    IProgramElement aspect = model.findElementForType(null, "DeclareCoverage");
    assertNotNull(aspect);

    String label = "declare error: \"Illegal construct..\"";
    IProgramElement decErrNode =
        model.findElementForSignature(aspect, IProgramElement.Kind.DECLARE_ERROR, "declare error");
    assertNotNull(decErrNode);
    assertEquals(decErrNode.toLabelString(), label);

    String decWarnMessage = "declare warning: \"Illegal call.\"";
    IProgramElement decWarnNode =
        model.findElementForSignature(
            aspect, IProgramElement.Kind.DECLARE_WARNING, "declare warning");
    assertNotNull(decWarnNode);
    assertEquals(decWarnNode.toLabelString(), decWarnMessage);

    String decParentsMessage = "declare parents: implements Serializable";
    IProgramElement decParentsNode =
        model.findElementForSignature(
            aspect, IProgramElement.Kind.DECLARE_PARENTS, "declare parents");
    assertNotNull(decParentsNode);
    assertEquals(decParentsNode.toLabelString(), decParentsMessage);
    // check the next two relative to this one
    int declareIndex = decParentsNode.getParent().getChildren().indexOf(decParentsNode);
    String decParentsPtnMessage = "declare parents: extends Observable";
    assertEquals(
        decParentsPtnMessage,
        ((IProgramElement) aspect.getChildren().get(declareIndex + 1)).toLabelString());
    String decParentsTPMessage = "declare parents: extends Observable";
    assertEquals(
        decParentsTPMessage,
        ((IProgramElement) aspect.getChildren().get(declareIndex + 2)).toLabelString());

    String decSoftMessage = "declare soft: SizeException";
    IProgramElement decSoftNode =
        model.findElementForSignature(aspect, IProgramElement.Kind.DECLARE_SOFT, "declare soft");
    assertNotNull(decSoftNode);
    assertEquals(decSoftNode.toLabelString(), decSoftMessage);

    String decPrecMessage =
        "declare precedence: AdviceCoverage, InterTypeDecCoverage, <type pattern>";
    IProgramElement decPrecNode =
        model.findElementForSignature(
            aspect, IProgramElement.Kind.DECLARE_PRECEDENCE, "declare precedence");
    assertNotNull(decPrecNode);
    assertEquals(decPrecNode.toLabelString(), decPrecMessage);
  }