Here is an example of how to collect all children from the com.nomagic.uml2.ext.magicdraw.classes.mdkernel.Element and avoid recursion using a simple for cycle:

    List<Element> children = new ArrayList<Element>(); 
    Element current = ... 
    children.add(current);
    // if the current element has children, list will be increased. 
    for (int i = 0; i < children.size(); i++)
    {
        current = children.get(i);
        // add all children into end of this list, so it emulates a recursion. 
        children.addAll(current.getOwnedElement());
    }

It is highly recommended to use more advanced collecting methods from com.nomagic.magicdraw.uml.Finder utility: