class AbstractCheckDescriptor {

  public final boolean isApplicable(PrereqCheckRequest request) throws AmbariException {
    List<CheckQualification> qualifications = Lists.newArrayList(
        new ServiceQualification(), new OrchestrationQualification(getClass()));

    // add any others from the concrete check
    qualifications.addAll(getQualifications());
    for (CheckQualification qualification : qualifications) {
      if (!qualification.isApplicable(request)) {
        return false;
      }
    }

    return true;
  }

  protected  AbstractCheckDescriptor(CheckDescription description);

}