public List<WsdlMessageAssertion> getAssertionsOfType(
      Class<? extends WsdlMessageAssertion> class1) {
    List<WsdlMessageAssertion> result = new ArrayList<WsdlMessageAssertion>();

    for (WsdlMessageAssertion assertion : assertions) {
      if (assertion.getClass().equals(class1)) result.add(assertion);
    }

    return result;
  }
  public boolean canAddAssertion(WsdlMessageAssertion assertion, Assertable assertable) {
    if (assertion.isAllowMultiple()) {
      return true;
    }

    for (int c = 0; c < assertable.getAssertionCount(); c++) {
      if (assertion.getClass().equals(assertable.getAssertionAt(c).getClass())) {
        return false;
      }
    }

    return true;
  }
  public WsdlMessageAssertion importAssertion(
      WsdlMessageAssertion source, boolean overwrite, boolean createCopy, String newName) {
    TestAssertionConfig conf = assertableConfig.addNewAssertion();
    conf.set(source.getConfig());
    conf.setName(newName);
    if (createCopy && conf.isSetId()) conf.unsetId();

    if (!source.isAllowMultiple()) {
      List<WsdlMessageAssertion> existing = getAssertionsOfType(source.getClass());
      if (!existing.isEmpty() && !overwrite) return null;

      while (!existing.isEmpty()) {
        removeAssertion(existing.remove(0));
      }
    }

    WsdlMessageAssertion result = addWsdlAssertion(conf);
    fireAssertionAdded(result);
    return result;
  }