drools-eclipse/org.guvnor.eclipse.webdav/src/interface/org/eclipse/webdav/dom/PropertyUpdate.java
public Enumeration getSetsAndRemoves() throws MalformedElementException {

        Node setOrRemove = getFirstChild(root, new String[] {"remove", "set"}); //$NON-NLS-1$ //$NON-NLS-2$
        ensureNotNull(Policy.bind("ensure.missingRemoveOrSetElmt"), setOrRemove); //$NON-NLS-1$
        Node property = null;

        while (setOrRemove != null && property == null) {
            Node prop = getFirstChild((Element) setOrRemove, "prop"); //$NON-NLS-1$
            ensureNotNull(Policy.bind("ensure.missingPropElmt"), prop); //$NON-NLS-1$
            property = getChildElement((Element) prop, true);

            if (property == null)
                setOrRemove = getNextSibling((Element) setOrRemove, new String[] {"remove", "set"}); //$NON-NLS-1$ //$NON-NLS-2$
        }

        final Node a = setOrRemove;
        final Node c = property;

        Enumeration e = new Enumeration() {
            Node currentSetOrRemove = a;
            Node currentProperty = c;

            public boolean hasMoreElements() {

                return currentProperty != null;
            }

            public Object nextElement() {

                if (!hasMoreElements())
                    throw new NoSuchElementException();
                Directive result = null;
                try {
                    result = new Directive((Element) currentProperty);
                } catch (MalformedElementException ex) {
                    Assert.isTrue(false, Policy.bind("assert.internalError")); //$NON-NLS-1$
                }
                currentProperty = getNextSibling((Element) currentProperty);
                while (currentSetOrRemove != null && currentProperty == null) {
                    currentSetOrRemove = getNextSibling((Element) currentSetOrRemove, new String[] {"remove", "set"}); //$NON-NLS-1$ //$NON-NLS-2$
                    if (currentSetOrRemove != null) {
                        Node prop = getFirstChild((Element) currentSetOrRemove, "prop"); //$NON-NLS-1$
                        if (prop != null)
                            currentProperty = getChildElement((Element) prop, true);
                    }
                }
                return result;
            }
        };

        return e;
    }
public Enumeration getSetsAndRemoves() throws MalformedElementException {

        Node setOrRemove = getFirstChild(root, new String[] {"remove", "set"}); //$NON-NLS-1$ //$NON-NLS-2$
        ensureNotNull(Policy.bind("ensure.missingRemoveOrSetElmt"), setOrRemove); //$NON-NLS-1$
        Node property = null;

        while (setOrRemove != null && property == null) {
            Node prop = getFirstChild((Element) setOrRemove, "prop"); //$NON-NLS-1$
            ensureNotNull(Policy.bind("ensure.missingPropElmt"), prop); //$NON-NLS-1$
            property = getChildElement((Element) prop, true);

            if (property == null)
                setOrRemove = getNextSibling((Element) setOrRemove, new String[] {"remove", "set"}); //$NON-NLS-1$ //$NON-NLS-2$
        }

        final Node a = setOrRemove;
        final Node c = property;

        Enumeration e = new Enumeration() {
            Node currentSetOrRemove = a;
            Node currentProperty = c;

            public boolean hasMoreElements() {

                return currentProperty != null;
            }

            public Object nextElement() {

                if (!hasMoreElements())
                    throw new NoSuchElementException();
                Directive result = null;
                try {
                    result = new Directive((Element) currentProperty);
                } catch (MalformedElementException ex) {
                    Assert.isTrue(false, Policy.bind("assert.internalError")); //$NON-NLS-1$
                }
                currentProperty = getNextSibling((Element) currentProperty);
                while (currentSetOrRemove != null && currentProperty == null) {
                    currentSetOrRemove = getNextSibling((Element) currentSetOrRemove, new String[] {"remove", "set"}); //$NON-NLS-1$ //$NON-NLS-2$
                    if (currentSetOrRemove != null) {
                        Node prop = getFirstChild((Element) currentSetOrRemove, "prop"); //$NON-NLS-1$
                        if (prop != null)
                            currentProperty = getChildElement((Element) prop, true);
                    }
                }
                return result;
            }
        };

        return e;
    }
Returns an <code>Enumeration</code> over this propertyupdate's set
and remove property elements.

@return an <code>Enumeration</code> of
<code>PropertyUpdate.Directive</code>s
@throws MalformedElementException if there is reason to believe that
this editor's underlying element is not well formed