/**
   * @param parentElement
   * @param childElement
   * @param severity
   */
  private void reportMinOccurenceViolation(
      Element parentElement, ElementOccurrenceResult result, int severity) {

    ISchemaElement childElement = result.getSchemaElement();
    String allowedOccurrences = new Integer(result.getAllowedOccurrences()).toString();
    String message =
        NLS.bind(
            MDECoreMessages.ExtensionsErrorReporter_minOccurrence,
            new String[] {allowedOccurrences, childElement.getName()});
    report(message, getLine(parentElement), severity, MDEMarkerFactory.CAT_FATAL);
  }
 private void computeAllowedElements(ISchemaCompositor compositor, HashSet elementSet) {
   ISchemaObject[] children = compositor.getChildren();
   for (int i = 0; i < children.length; i++) {
     ISchemaObject child = children[i];
     if (child instanceof ISchemaObjectReference) {
       ISchemaObjectReference ref = (ISchemaObjectReference) child;
       ISchemaElement refElement = (ISchemaElement) ref.getReferencedObject();
       if (refElement != null) elementSet.add(refElement.getName());
     } else if (child instanceof ISchemaCompositor) {
       computeAllowedElements((ISchemaCompositor) child, elementSet);
     }
   }
 }