public static OOXMLElement parseOOXML( XmlPullParser xpp, Stack<String> lastTag, WorkBookHandle bk )
	{
		CxnSp c = null;
		GraphicFrame g = null;
		GrpSp grp = null;
		Pic p = null;
		Sp s = null;
		try
		{
			int eventType = xpp.getEventType();
			while( eventType != XmlPullParser.END_DOCUMENT )
			{
				if( eventType == XmlPullParser.START_TAG )
				{
					String tnm = xpp.getName();
					if( tnm.equals( "cxnSp" ) )
					{    // connection shape
						lastTag.push( tnm );
						c = (CxnSp) CxnSp.parseOOXML( xpp, lastTag, bk );
						break;
					}
					if( tnm.equals( "graphicFrame" ) )
					{    // graphic data usually chart
						lastTag.push( tnm );
						g = (GraphicFrame) GraphicFrame.parseOOXML( xpp, lastTag );
						break;
					}
					if( tnm.equals( "grpSp" ) )
					{    // group shape - combines one or more of sp/pic/graphicFrame/cxnSp
						lastTag.push( tnm );
						grp = GrpSp.parseOOXML( xpp, lastTag, bk );
						break;
					}
					if( tnm.equals( "sp" ) )
					{        // shape
						lastTag.push( tnm );
						s = (Sp) Sp.parseOOXML( xpp, lastTag, bk );
						break;
					}
					if( tnm.equals( "pic" ) )
					{        // picture/image
						lastTag.push( tnm );
						p = (Pic) Pic.parseOOXML( xpp, lastTag, bk );
						break;
					}
				}
				eventType = xpp.next();
			}
		}
		catch( Exception e )
		{
			log.error( "ObjectChoice.parseOOXML: " + e.toString() );
		}
		ObjectChoice o = new ObjectChoice( c, g, grp, p, s );
		return o;
	}